因此,在我的应用程序中,我将连接到给定 SSID 和网络 key 的 WiFi 网络。它运行良好,如果使用广播接收器连接成功,用户会收到通知。现在我只需要能够告诉用户是否存在身份验证问题(即给定的 key 不正确)。我知道有一个 getSupplicantState() WifiInfo 类的方法,但它没有提供足够的 Supplicant State为了我所需要的。任何有关此事的帮助将不胜感激。
这是我当前的 Wifi 广播接收器 onReceive 方法;
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager conMan = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = conMan.getActiveNetworkInfo();
if (netInfo != null && netInfo.getType() == ConnectivityManager.TYPE_WIFI) {
Log.d("WifiReceiver", "Have Wifi Connection");
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
String scannedSSID = sp.getString("SSID", "");
final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
String SSID;
if (connectionInfo != null) {
SSID = connectionInfo.getSSID();
Log.d("WifiReceiver", "SSID is " + SSID);
Log.d("WifiReceiver", "Scanned SSID is " + scannedSSID);
String compScanned = "\"" + scannedSSID + "\"";
if (SSID.equalsIgnoreCase(compScanned)) {
Log.d("WifiReceiver", "Connected to " +scannedSSID);
Toast.makeText(context, "Connected to " + scannedSSID, Toast.LENGTH_LONG).show();
context.unregisterReceiver(this);
}
}
else
return;
}
else if (netInfo.isConnectedOrConnecting()) {
Toast.makeText(context, "Connecting...", Toast.LENGTH_LONG).show();
}
else
Log.d("WifiReceiver", "Don't have Wifi Connection");
}
最佳答案
一种选择是监视请求者状态的状态转换。例如,我注意到当我输入错误的 wifi 密码时,我的状态会从 FOUR_WAY_HANDSHAKE 转换为 DISCONNECTED。如果我看到这种转变,我会在屏幕上用身份验证错误标记网络。
关于java - Android 如何判断 WPA key 是否不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24263302/