Android便携式热点的开启状态检测和SSID的获取方法
WIFI热点的开启状态和开启后的SSID如何获取呢?
打开WifiManager.java源码,可找到getWifiApState()方法,惊喜的发现直接调用这个方法就能获取到热点的状态,然而在调用的时候并不能调用到这个方法。。。这个方法被隐藏起来了,目前我是通过反射调用的。
/**
*GetstheWi-Fienabledstate.
*@returnOneof{@link#WIFI_AP_STATE_DISABLED},
*{@link#WIFI_AP_STATE_DISABLING},{@link#WIFI_AP_STATE_ENABLED},
*{@link#WIFI_AP_STATE_ENABLING},{@link#WIFI_AP_STATE_FAILED}
*@see#isWifiApEnabled()
*
*@hideDontopenyet
*/
publicintgetWifiApState(){
try{
returnmService.getWifiApEnabledState();
}catch(RemoteExceptione){
returnWIFI_AP_STATE_FAILED;
}
}
于是就写了一个放射,获取热点的状态
publicstaticbooleanisWifiApOpen(Contextcontext){
try{
WifiManagermanager=(WifiManager)context.getSystemService(Context.WIFI_SERVICE);
//通过放射获取getWifiApState()方法
Methodmethod=manager.getClass().getDeclaredMethod("getWifiApState");
//调用getWifiApState(),获取返回值
intstate=(int)method.invoke(manager);
//通过放射获取WIFI_AP的开启状态属性
Fieldfield=manager.getClass().getDeclaredField("WIFI_AP_STATE_ENABLED");
//获取属性值
intvalue=(int)field.get(manager);
//判断是否开启
if(state==value){
returntrue;
}else{
returnfalse;
}
}catch(NoSuchMethodExceptione){
e.printStackTrace();
}catch(IllegalAccessExceptione){
e.printStackTrace();
}catch(InvocationTargetExceptione){
e.printStackTrace();
}catch(NoSuchFieldExceptione){
e.printStackTrace();
}
returnfalse;
}
通过 getWifiApState()方法返回值的注释,可以找到如下几种状态,拿到当前状态值之后,只需要对比各种状态的值,就知道热点的开启状态了
*@returnOneof{@link#WIFI_STATE_DISABLED},
*{@link#WIFI_STATE_DISABLING},{@link#WIFI_STATE_ENABLED},
*{@link#WIFI_STATE_ENABLING},{@link#WIFI_STATE_UNKNOWN}
同样的,也是通过反射获取到热点的SSID
try{
WifiManagermanager=(WifiManager)this.getSystemService(Context.WIFI_SERVICE);
//拿到getWifiApConfiguration()方法
Methodmethod=manager.getClass().getDeclaredMethod("getWifiApConfiguration");
//调用getWifiApConfiguration()方法,获取到热点的WifiConfiguration
WifiConfigurationconfiguration=(WifiConfiguration)method.invoke(manager);
ssid=configuration.SSID;
}catch(NoSuchMethodExceptione){
e.printStackTrace();
}catch(InvocationTargetExceptione){
e.printStackTrace();
}catch(IllegalAccessExceptione){
e.printStackTrace();
}
以上所述是小编给大家介绍的Android便携式热点的开启状态检测和SSID的获取方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!