Android:我如何检查wifi是否经过认证
我的应用程序在android中使用wifi manager,但我遇到了一个错误,情况是:wifi已打开,但未通过身份验证(使用我们公司的wifi用户名和密码),当时我的应用程序正在强制关闭 我使用的代码是Android:我如何检查wifi是否经过认证,android,android-wifi,Android,Android Wifi,我的应用程序在android中使用wifi manager,但我遇到了一个错误,情况是:wifi已打开,但未通过身份验证(使用我们公司的wifi用户名和密码),当时我的应用程序正在强制关闭 我使用的代码是 try{ if (connectivityManager != null && (connectivityManager.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) ||
try{
if (connectivityManager != null &&
(connectivityManager.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) ||
(connectivityManager.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED))
{
//You are connected, do something online.
return true;
}
else if (connectivityManager.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED ||
connectivityManager.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED )
{
//Not connected.
//Toast.makeText(getApplicationContext(), "You must be connected to the internet", Toast.LENGTH_LONG).show();
loginTask.myPublishProgress("You must be connected to the internet");
return false;
}
}
catch(NullPointerException ae)
{
ae.printStackTrace();
loginTask.myPublishProgress("You must be connected to the internet");
}
使用
看
如果
已完成-所有身份验证已完成。
请检查以下答案:
不要使用
conectivityManager.getNetworkInfo(0) and getNetworkInfo(1).
而不是那种用途
无线上网
NetworkInfo conectivityManager = connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
适用于移动网络(3g)
因为在Jelly Beans上硬编码这样的值会有困难。你能发布你的日志吗?不知道旧的API,但是当输入错误的密码以确保身份验证是“禁用原因”时,请求状态很少提供足够的转换在现在隐藏的API中,也就是说,我们永远无法知道最近的API中的身份验证是否失败。我的设备wi-fi没有经过身份验证,但每次都会返回完成的代码。这些答案只检查有效连接,没有提供足够的细节来断言身份验证是问题所在。我在这篇文章的其他地方的评论是:“我不知道旧的API,但是当输入错误的密码时,请求状态很少提供足够的转换,以确保身份验证是现在隐藏的API中的“不可禁用的原因”——也就是说,我们永远无法知道最近的API中的身份验证是否失败”同意!对于高于21的api,可以使用ConnectionManager.NetworkCallback()进行检查。但是,对于低于21的api,没有解决方案检查,如果有人找到该解决方案,请提供帮助。非常感谢。
NetworkInfo conectivityManager = connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo conectivityManager = connectivity.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);