Android - 查看wifi密码是否正确

hub*_*ert 4 android wifi

我打算制作一个应用程序来检查某个 wifi 网络是否使用通用密码。我有一个最常见的密码列表,但具有以下功能:

public boolean connectTo(String psKey){
    WifiConfiguration wc = new WifiConfiguration();
    wc.SSID = "\"" + dbw.getSsid() + "\"";
    wc.preSharedKey  = "\"" + psKey + "\"";

    wc.status = WifiConfiguration.Status.ENABLED;   
    wc = configureCapabs(wc, dbw.getCapability());

    int res = wifi.addNetwork(wc);
    Toast.makeText(this, "add Network returned " + res , Toast.LENGTH_SHORT).show();
    boolean b = wifi.enableNetwork(res, true);        
    Toast.makeText(this, "enableNetwork returned " + b , Toast.LENGTH_SHORT).show();
    if(!b) return false;
    boolean fin = /*b ? wifi.reassociate() : */wifi.reconnect();
    return fin;
}
Run Code Online (Sandbox Code Playgroud)

它返回真,即使密码不正确。有没有办法检查我尝试登录的密码是被接受还是被拒绝?

Pau*_*aul 5

您正在使用reconnect()/reassociate()方法WiFiManager来检查天气或连接是否成功,但它们返回的布尔值意味着其他含义。返回值仅告诉您 STARTING 给定操作的结果。这是因为关联和连接到 WiFi 网络需要时间。然而,这些方法会立即返回并且不会阻塞。连接或关联网络的实际任务是在后台异步完成的。

您可以通过收听特定的系统范围广播来监控 WiFi 连接发生的情况:

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
<action android:name="android.net.wifi.STATE_CHANGE"/>
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到有关此的更多信息- 检查 Torsten 的答案。