2011-05-26 92 views
7

我想知道是否有一些代碼片段可用於連接Android設備到WiFi網絡。網絡應該是打開的或WEP/WPA已加密,並且該設備可見。通常,我們使用GUI界面輸入WiFi密碼並點擊連接按鈕。我想將密碼存儲在一個地方,並使用密碼無縫連接到網絡,無需人工干預。那可能嗎?非常感謝。Android連接WiFi無需人工干預

回答

2

WifiManager - 你有沒有試過看這裏。 addNetwork()方法看起來像它可以做你想做的事情。你所要做的就是將信息放在WifiConfiguration類中,然後添加網絡,然後啓用該連接。文檔就在那裏。

1

結帳它可以用來啓用WiFi的「WifiManager」

的文檔:

WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE); 
wifiManager.setWifiEnabled(true); 

,它可以用來做很多其他的事情。

編輯:不要忘了監控和改變無線網絡連接狀態何時更新您的權限,例如:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 

等等

14

謝謝你們。在您的幫助下,我現在可以無痛連接到WPA/PSK加密網絡。這裏是我的代碼片段:

 WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
     // setup a wifi configuration 
     WifiConfiguration wc = new WifiConfiguration(); 
     wc.SSID = "\"YOUR_SSID\""; 
     wc.preSharedKey = "\"YOUR_PASSWORD\""; 
     wc.status = WifiConfiguration.Status.ENABLED; 
     wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
     wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
     wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
     wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
     wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
     wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 
     // connect to and enable the connection 
     int netId = wifiManager.addNetwork(wc); 
     wifiManager.enableNetwork(netId, true); 
     wifiManager.setWifiEnabled(true); 

的招數是:

  • SSID字符串應該與包圍「這是由\表示」
  • addNetwork()方法默認禁用添加的網絡,所以你應該使用enableNetwork()方法來啓用它。
+0

它解決了我的問題!謝謝 – Shatazone 2012-01-23 11:40:24

+0

令人驚歎的解決方案!任何想法如何找出輸入的密碼是否錯誤?我試圖添加一個嘗試捕獲,但它不工作,密碼保存到WiFi網絡,並再次連接到它的唯一方法是忘記網絡或更改密碼 – Zame 2016-03-13 17:24:04

3

爲了讓OP的示例代碼的工作,我必須增加一個行:

wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 

如果沒有這條線,它只是將無法連接到網絡。接受並添加配置,但不進行連接嘗試。我實際上在logcat窗口中收到以下消息:

Event [WPA: Failed to select WPA/RSN] android 

這使我找到最終解決方案,弄清楚爲什麼它不適用於我。