我打算制作一个应用程序来检查某个 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)
它返回真,即使密码不正确。有没有办法检查我尝试登录的密码是被接受还是被拒绝?
您正在使用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 的答案。
| 归档时间: |
|
| 查看次数: |
6487 次 |
| 最近记录: |