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的获取方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!