国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android便攜式熱點的開啟狀態檢測和SSID的獲取方法

2019-12-12 04:03:10
字體:
來源:轉載
供稿:網友

WIFI熱點的開啟狀態和開啟后的SSID如何獲取呢?

打開WifiManager.java源碼,可找到 getWifiApState() 方法,驚喜的發現直接調用這個方法就能獲取到熱點的狀態,然而在調用的時候并不能調用到這個方法。。。這個方法被隱藏起來了,目前我是通過反射調用的。

/**   * 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;    }  }

于是就寫了一個放射,獲取熱點的狀態

 public static boolean isWifiApOpen(Context context) {    try {      WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);      //通過放射獲取 getWifiApState()方法      Method method = manager.getClass().getDeclaredMethod("getWifiApState");      //調用getWifiApState() ,獲取返回值      int state = (int) method.invoke(manager);      //通過放射獲取 WIFI_AP的開啟狀態屬性      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() 方法返回值的注釋,可以找到如下幾種狀態,拿到當前狀態值之后,只需要對比各種狀態的值,就知道熱點的開啟狀態了   

* @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");            //調用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便攜式熱點的開啟狀態檢測和SSID的獲取方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定结县| 同仁县| 丰都县| 汾西县| 哈巴河县| 堆龙德庆县| 翁牛特旗| 峨眉山市| 祁门县| 任丘市| 琼海市| 德安县| 平塘县| 息烽县| 金溪县| 莱芜市| 苏尼特左旗| 闽清县| 正镶白旗| 会宁县| 中西区| 峨眉山市| 柳河县| 台南县| 庆元县| 西充县| 晋州市| 贵溪市| 乡宁县| 嘉义市| 瓦房店市| 安泽县| 华坪县| 贵阳市| 义乌市| 西乌| 太湖县| 江北区| 伊宁县| 建德市| 武宁县|