Android:WiFi连接之一
WIFI連接相關知識
- 感慨
- WIFI連接的相關權限
- 打開、關閉WIFI
- 打開WiFi:
- 關閉WiFi:
- WiFi連接
- 輸入WiFi名稱、密碼實現連接
- 斷開WIFI連接
感慨
最近學習安卓WiFi連接,真是一言難盡啊。WiFi連接這部分的資料網上并不多,于是只能官方文檔+一直找資料學。即便如此,也是讓我自閉了,一堆API棄了,網上找的有的已經不適用了。。。總之就是問題多多,所以還是自己總結一下筆記吧,加深理解,也防止后面自己用到又要四處去找資料。
WIFI連接的相關權限
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission><!-- 改變網絡狀態--><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><!-- 改變WIFI狀態--><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><!-- 獲取網絡信息狀態--><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><!-- 獲取WIFI信息狀態--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><!-- 允許一個程序訪問精良位置(如GPS)-->android.permission.ACCESS_FINE_LOCATION這個權限主要getConnectionInfo()這個方法需要,這個方法是用于獲取處于活躍狀態的WiFi信息,包括已經連接和連接中兩種狀態。(此外獲取wifi列表的的方法中也需要,這里只介紹getConnectionInfo())
這個權限要手動打開,且不會提示,除非你實現了動態獲取權限。除了手動設置權限外,還要打開GPS
打開、關閉WIFI
WiFi的打開和關閉用的 WifiManager 類中的setWifiEnabled方法實現。
打開WiFi:
//首先,創建WifiManager對象 Context context = getApplicationContext(); WifiManager wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);//判斷WiFi是否打開,沒有則打開WiFi,res為真則成功打開了 if (!wifiManager.isWifiEnabled()) {boolean res = wifiManager.setWifiEnabled(true); }關閉WiFi:
//首先,創建WifiManager對象 Context context = getApplicationContext(); WifiManager wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);//判斷WiFi是否打開,打開了則關閉WiFi,res為真則成功關閉了 if (wifiManager.isWifiEnabled()) {boolean res = wifiManager.setWifiEnabled(true); }API29以后 ,這個方法已經被棄用了,沒有效果,res 會一直為 false-——其實很多WiFi相關的方法都棄了。一開始我還以為有什么代替的方法,結果查了很久發現,在面向安卓8以后的平臺中已經不允許app打開和關閉WiFi,所以是沒有新方法的。如果要用,只能這樣:
在相應的gradle下把這些改成29以前的
我是把三個都改了,可能只改一些就行,不過我沒試了。
WiFi連接
輸入WiFi名稱、密碼實現連接
// 首先配置一個WifiConfiguration對象 String SSID = "Rair"; //輸入WIFI名稱 String Password = "88888888"; //輸入WIFI密碼 //WIFI安全性 WifiCipherType Type = Password.equals("")? WifiConnector.WifiCipherType.WIFICIPHER_NOPASS: WifiConnector.WifiCipherType.WIFICIPHER_WPA WifiConfiguration config = new WifiConfiguration(); //公認的IEEE 802.11驗證算法。 config.allowedAuthAlgorithms.clear(); //公認的的公共組密碼。 config.allowedGroupCiphers.clear(); //公認的密鑰管理方案。 config.allowedKeyManagement.clear(); //密碼為WPA。 config.allowedPairwiseCiphers.clear(); //公認的安全協議。 config.allowedProtocols.clear(); //設置WiFi名稱 config.SSID = "\"" + SSID + "\""; // 開放 if (Type == WifiCipherType.WIFICIPHER_NOPASS) {config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); } // wpa if (Type == WifiCipherType.WIFICIPHER_WPA) {//設置密碼config.preSharedKey = "\"" + Password + "\""; //不廣播其SSID的網絡config.hiddenSSID = true;config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);// 此處需要修改否則不能自動重聯// config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);config.status = WifiConfiguration.Status.ENABLED; } //添加網絡 int netID = wifiManager.addNetwork(wifiConfig); //連接WIFI boolean enabled = wifiManager.enableNetwork(netID, true);斷開WIFI連接
斷開WiFi連接有兩種方法
//暫時斷開,可以重連 wifiManager.disconnect() //斷開,不可以重連,忘記密碼 wifiManager.disableNetwork(netID)以上代碼是網上的代碼結合我的學習情況修改
總結
以上是生活随笔為你收集整理的Android:WiFi连接之一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 好退休军人参观奥体写什么横幅好?
- 下一篇: 部队枪弹失管失控危害有哪些?