Android便攜式熱點的開啟狀態(tài)檢測和SSID的獲取方法
WIFI熱點的開啟狀態(tài)和開啟后的SSID如何獲取呢?
打開WifiManager.java源碼,可找到 getWifiApState() 方法,驚喜的發(fā)現(xiàn)直接調(diào)用這個方法就能獲取到熱點的狀態(tài),然而在調(diào)用的時候并不能調(diào)用到這個方法。。。這個方法被隱藏起來了,目前我是通過反射調(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;
}
}
于是就寫了一個放射,獲取熱點的狀態(tài)
public static boolean isWifiApOpen(Context context) {
try {
WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
//通過放射獲取 getWifiApState()方法
Method method = manager.getClass().getDeclaredMethod("getWifiApState");
//調(diào)用getWifiApState() ,獲取返回值
int state = (int) method.invoke(manager);
//通過放射獲取 WIFI_AP的開啟狀態(tài)屬性
Field field = manager.getClass().getDeclaredField("WIFI_AP_STATE_ENABLED");
//獲取屬性值
int value = (int) field.get(manager);
//判斷是否開啟
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;
}
通過 getWifiApState() 方法返回值的注釋,可以找到如下幾種狀態(tài),拿到當(dāng)前狀態(tài)值之后,只需要對比各種狀態(tà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}
同樣的,也是通過反射獲取到熱點的SSID
try {
WifiManager manager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
//拿到getWifiApConfiguration()方法
Method method = manager.getClass().getDeclaredMethod("getWifiApConfiguration");
//調(diào)用getWifiApConfiguration()方法,獲取到 熱點的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便攜式熱點的開啟狀態(tài)檢測和SSID的獲取方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Android ListView實現(xiàn)仿iPhone實現(xiàn)左滑刪除按鈕的簡單實例
下面小編就為大家?guī)硪黄狝ndroid ListView實現(xiàn)仿iPhone實現(xiàn)左滑刪除按鈕的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08
Android 中IntentFilter的匹配規(guī)則實例詳解
這篇文章主要介紹了Android 中IntentFilter的匹配規(guī)則實例詳解的相關(guān)資料,希望通過本文大家能了解掌握IntentFilter的匹配規(guī)則問題,需要的朋友可以參考下2017-09-09
Android在listview添加checkbox實現(xiàn)原理與代碼
Android在listview添加checkbox如何實現(xiàn)一直都是新手朋友們的頭疼問題,接下來為您詳細介紹實現(xiàn)方法,感興趣的朋友可以了解下2013-01-01
android 使用kotlin 實現(xiàn)點擊更換全局語言(中日英切換)
這篇文章主要介紹了android kotlin 點擊更換全局語言的實現(xiàn)方法,這里主要介紹中日英切換,需要的朋友可以參考下2019-11-11
Android工具欄頂出轉(zhuǎn)場動畫的實現(xiàn)方法實例
這篇文章主要給大家介紹了關(guān)于Android工具欄頂出轉(zhuǎn)場動畫的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09

