java - Android 如何判断 WPA key 是否不正确

标签 java android wifi android-wifi

因此,在我的应用程序中,我将连接到给定 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/

相关文章:

android - 自动重新连接 socket 从 wifi 到 4G

java - 用透明像素填充 BufferedImage

java - 如何使用 jooq API 获取数据库当前时间

broadcastreceiver - 访问广播接收器中的应用程序类

java - 使用 gradle、Android Studio、ADT 构建依赖项

Android:如何检测点击自定义 SearchView 元素

iphone - 从 iPhone 应用程序通过 WIFI 将文件导出到计算机 -

Android AOSP 5.1 禁用/删除 wifi 代理

java - Android Studio 无法初始化类 org.codehaus.groovy.runtime.InvokerHelper

java - 使用 IN 子句更新 JPQL 中的用户实体字段