检测 WiFi 网络何时无法验证
Detect when WiFi network fails to authenticate
我正在尝试使用 WiFiManager
连接到 WiFi 网络。这是我用来执行此操作的代码:
WifiManager manager = [...];
WifiConfiguration config = new WifiConfiguration();
manager.setWifiEnabled(true);
//Set SSID, PSK, etc...
[...]
//Connect to the network
int netId = manager.addNetwork(config);
if (netId == -1)
{
Toast.makeText(this, "Invalid PSK", Toast.LENGTH_LONG).show();
return;
}
manager.enableNetwork(netId, true);
manager.saveConfiguration();
之前,我为 WifiManager.NETWORK_STATE_CHANGED_ACTION
操作注册了一个 BroadcastReceiver
。我试图通过检查给定 NetworkInfo
.
的 DetailedState
来检测连接何时成功或失败(出于各种原因,包括身份验证)
连接成功时一切正常,但由于某些原因,当连接失败时我的接收器不是 "executed"。网络已添加到设备列表中,我可以通过进入 WiFi 设置看到它,但它不会尝试连接(或者它会尝试连接但不会通知我的接收器)。
有线索吗?谢谢!
enableNetwork 方法return 如果连接状态为成功则为真。
这在成功时工作正常,但不是检查失败状态的最佳方法(return 如果在第一步身份验证后连接失败,则为真)。
我认为您可以在 networkInfo 对象中检查实际连接的网络以查看请求是否正常:
ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
我终于实现了我想要的。
要检测连接是否成功,请注册 WifiManager.NETWORK_STATE_CHANGED_ACTION
广播意图并检查 NetworkInfo.DetailedState.OBTAINING_IPADDR
详细状态(显然对于 WiFi)。
要检测连接失败,请注册 WifiManager.SUPPLICANT_STATE_CHANGED_ACTION
广播意图并检查任何 WifiManager.EXTRA_SUPPLICANT_ERROR
额外的整数(通常是 WifiManager.ERROR_AUTHENTICATING
)。您可能需要获得 Android hidden API 的访问权限才能实现。
我正在尝试使用 WiFiManager
连接到 WiFi 网络。这是我用来执行此操作的代码:
WifiManager manager = [...];
WifiConfiguration config = new WifiConfiguration();
manager.setWifiEnabled(true);
//Set SSID, PSK, etc...
[...]
//Connect to the network
int netId = manager.addNetwork(config);
if (netId == -1)
{
Toast.makeText(this, "Invalid PSK", Toast.LENGTH_LONG).show();
return;
}
manager.enableNetwork(netId, true);
manager.saveConfiguration();
之前,我为 WifiManager.NETWORK_STATE_CHANGED_ACTION
操作注册了一个 BroadcastReceiver
。我试图通过检查给定 NetworkInfo
.
DetailedState
来检测连接何时成功或失败(出于各种原因,包括身份验证)
连接成功时一切正常,但由于某些原因,当连接失败时我的接收器不是 "executed"。网络已添加到设备列表中,我可以通过进入 WiFi 设置看到它,但它不会尝试连接(或者它会尝试连接但不会通知我的接收器)。
有线索吗?谢谢!
enableNetwork 方法return 如果连接状态为成功则为真。 这在成功时工作正常,但不是检查失败状态的最佳方法(return 如果在第一步身份验证后连接失败,则为真)。
我认为您可以在 networkInfo 对象中检查实际连接的网络以查看请求是否正常:
ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
我终于实现了我想要的。
要检测连接是否成功,请注册 WifiManager.NETWORK_STATE_CHANGED_ACTION
广播意图并检查 NetworkInfo.DetailedState.OBTAINING_IPADDR
详细状态(显然对于 WiFi)。
要检测连接失败,请注册 WifiManager.SUPPLICANT_STATE_CHANGED_ACTION
广播意图并检查任何 WifiManager.EXTRA_SUPPLICANT_ERROR
额外的整数(通常是 WifiManager.ERROR_AUTHENTICATING
)。您可能需要获得 Android hidden API 的访问权限才能实现。