Android便攜式熱點(diǎn)的開(kāi)啟狀態(tài)檢測(cè)和SSID的獲取方法
WIFI熱點(diǎn)的開(kāi)啟狀態(tài)和開(kāi)啟后的SSID如何獲取呢?
打開(kāi)WifiManager.java源碼,可找到 getWifiApState() 方法,驚喜的發(fā)現(xiàn)直接調(diào)用這個(gè)方法就能獲取到熱點(diǎn)的狀態(tài),然而在調(diào)用的時(shí)候并不能調(diào)用到這個(gè)方法。。。這個(gè)方法被隱藏起來(lái)了,目前我是通過(guò)反射調(diào)用的。
/**
* Gets the Wi-Fi enabled state.
* @return One of {@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()
*
* @hide Dont open yet
*/
public int getWifiApState() {
try {
return mService.getWifiApEnabledState();
} catch (RemoteException e) {
return WIFI_AP_STATE_FAILED;
}
}
于是就寫(xiě)了一個(gè)放射,獲取熱點(diǎn)的狀態(tài)
public static boolean isWifiApOpen(Context context) {
try {
WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
//通過(guò)放射獲取 getWifiApState()方法
Method method = manager.getClass().getDeclaredMethod("getWifiApState");
//調(diào)用getWifiApState() ,獲取返回值
int state = (int) method.invoke(manager);
//通過(guò)放射獲取 WIFI_AP的開(kāi)啟狀態(tài)屬性
Field field = manager.getClass().getDeclaredField("WIFI_AP_STATE_ENABLED");
//獲取屬性值
int value = (int) field.get(manager);
//判斷是否開(kāi)啟
if (state == value) {
return true;
} else {
return false;
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
return false;
}
通過(guò) getWifiApState() 方法返回值的注釋,可以找到如下幾種狀態(tài),拿到當(dāng)前狀態(tài)值之后,只需要對(duì)比各種狀態(tài)的值,就知道熱點(diǎn)的開(kāi)啟狀態(tài)了
* @return One of {@link #WIFI_STATE_DISABLED},
* {@link #WIFI_STATE_DISABLING}, {@link #WIFI_STATE_ENABLED},
* {@link #WIFI_STATE_ENABLING}, {@link #WIFI_STATE_UNKNOWN}
同樣的,也是通過(guò)反射獲取到熱點(diǎn)的SSID
try {
WifiManager manager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
//拿到getWifiApConfiguration()方法
Method method = manager.getClass().getDeclaredMethod("getWifiApConfiguration");
//調(diào)用getWifiApConfiguration()方法,獲取到 熱點(diǎn)的WifiConfiguration
WifiConfiguration configuration = (WifiConfiguration) method.invoke(manager);
ssid = configuration.SSID;
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
以上所述是小編給大家介紹的Android便攜式熱點(diǎn)的開(kāi)啟狀態(tài)檢測(cè)和SSID的獲取方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android studio 如何刪除項(xiàng)目 module
本篇文章主要介紹了Android studio 如何刪除項(xiàng)目module的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-05-05
Android ListView實(shí)現(xiàn)仿iPhone實(shí)現(xiàn)左滑刪除按鈕的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇Android ListView實(shí)現(xiàn)仿iPhone實(shí)現(xiàn)左滑刪除按鈕的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
Android實(shí)現(xiàn)帶簽到贏積分功能的日歷
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)帶簽到贏積分功能的日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android 中IntentFilter的匹配規(guī)則實(shí)例詳解
這篇文章主要介紹了Android 中IntentFilter的匹配規(guī)則實(shí)例詳解的相關(guān)資料,希望通過(guò)本文大家能了解掌握IntentFilter的匹配規(guī)則問(wèn)題,需要的朋友可以參考下2017-09-09
Android在listview添加checkbox實(shí)現(xiàn)原理與代碼
Android在listview添加checkbox如何實(shí)現(xiàn)一直都是新手朋友們的頭疼問(wèn)題,接下來(lái)為您詳細(xì)介紹實(shí)現(xiàn)方法,感興趣的朋友可以了解下2013-01-01
android 使用kotlin 實(shí)現(xiàn)點(diǎn)擊更換全局語(yǔ)言(中日英切換)
這篇文章主要介紹了android kotlin 點(diǎn)擊更換全局語(yǔ)言的實(shí)現(xiàn)方法,這里主要介紹中日英切換,需要的朋友可以參考下2019-11-11
Android工具欄頂出轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的實(shí)現(xiàn)方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Android工具欄頂出轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位Android開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09

