我正在尝试连接到 Android 上的特定 Wifi 网络 (WPA2),但不知何故,它无法在运行 Android 版本 4.1.2 的特定设备上运行。而相同的代码正在运行 Android 版本 4.4.2 和 4.4.4 的其他 2 台设备上运行。在它不工作的设备上,我看到网络已成功添加,因为我可以手动连接而无需明确输入密钥。代码片段粘贴在下面。知道我在这里做错了什么还是存在版本依赖性?
private boolean connectToWifi(String networkSSID, String networkPass) {
networkSSID = "\"" + networkSSID + "\"";
WifiManager wifiMgr = (WifiManager)(this.getSystemService(Context.WIFI_SERVICE));
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
if(wifiInfo != null) {
String name = wifiInfo.getSSID();
if(name.equalsIgnoreCase(networkSSID)) {
return true;
}
}
int networkId = -1;
WifiManager wifiManager = (WifiManager)(this.getSystemService(Context.WIFI_SERVICE));
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.SSID != null && i.SSID.equals(networkSSID)) {
break;
}
}
if(networkId == -1) {
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = networkSSID;
conf.preSharedKey = "\"" + networkPass + "\"";
networkId = wifiManager.addNetwork(conf);
if(networkId == -1)
return false;
}
boolean retval = false;
list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.SSID != null && i.SSID.equals(networkSSID)) {
this.addDebugMessage("Trying to connect to p2p network");
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
retval = wifiManager.reconnect();
break;
}
}
return retval;
}
清单中还添加了必要的权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" android:required="true"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" android:required="true"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" android:required="true"/>
<uses-permission android:name="android.permission.INTERNET" android:required="true"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" android:required="true"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" android:required="true"/>