我正在我的 Android 应用程序中编写一个 wifi 连接页面。它扫描可用的 Wifi 网络,将其显示在 ListView 中,然后您单击要连接的网络。
如果密码正确,连接实际上有效,但我想通知用户连接失败(由于密码)
实际上我测试将 wifiManager.enableNetwork(netId, true);
结果放入布尔值中,但它总是返回 true
有关如何正确获取此信息的任何想法?
private void connectToNetwork(String networkSSID, String networkPass, String networkCapabilities, DialogInterface dialogInterface, WifiItem selectedWifi) {
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... voids) {
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiConfiguration wifiConfig = new WifiConfiguration();
wifiConfig.SSID = String.format("\"%s\"", networkSSID);
if (!wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(true);
}
if (networkCapabilities.toUpperCase().contains("WEP")) { // WEP Network.
wifiConfig.wepKeys[0] = String.format("\"%s\"", networkPass);
wifiConfig.wepTxKeyIndex = 0;
wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
} else if (networkCapabilities.toUpperCase().contains("WPA")) { // WPA Network
wifiConfig.preSharedKey = String.format("\"%s\"", networkPass);
} else { // OPEN Network.
wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
}
int netId = wifiManager.addNetwork(wifiConfig);
wifiManager.disconnect();
boolean isConnectOk = wifiManager.enableNetwork(netId, true);
wifiManager.reconnect();
return isConnectOk;
}
@Override
protected void onPostExecute(Boolean connexion) {
super.onPostExecute(connexion);
if (connexion) {
Toast.makeText(WifiActivity.this, (String.format(getResources().getString(R.string.connected_to_network), selectedWifi.getSSID())), Toast.LENGTH_LONG).show();
dialogInterface.dismiss();
} else {
Toast.makeText(WifiActivity.this, (R.string.wifi_incorrect_password), Toast.LENGTH_LONG).show();
}
}
}.execute();
} ```