我花了几天的时间来弄清楚我的Android手机的wifi在学校出了什么问题。学校wifi是使用PEAP的802.1x EAP。需要用户名和密码。
我有两部Android手机,并且在它们上运行了许多不同的ROM,所以我知道这不仅是特定于ROM的问题。我目前在Mytouch 3g挡泥板上运行2.2.1。我的手机没有数据套餐,因此我不保存数据。我只使用wifi。
我的问题是,连接到wifi后,一段时间后一切都很好,但是很快(也许15分钟到一个小时后),我将打开手机,当我看到wifi连接时,它显示身份验证直到我重设它为止如果我尝试使用常规HTTP上网,则可以正常运行,但是如果我尝试运行任何需要wifi连接的应用,则它们会提示您存在网络连接错误(例如Google语音搜索,其中会显示“连接问题”)。供稿无法更新,gmail无法更新等。重置连接后,wifi再次可以正常工作。我不知道为什么会这样。我认为这与学校无线网络的设置有关。
为了快速解决此问题,我正在编写一个应用程序,该应用程序将测试连接是否正在验证,如果连接正确,则将其重新关联。我遇到了麻烦。
这是查看wifi是否正在验证的代码以及一些调试输出:
private void checkWifi() {
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
SupplicantState state = info.getSupplicantState();
Log.d(getClass().getSimpleName(), state.toString());
NetworkInfo.DetailedState state2 = WifiInfo.getDetailedStateOf(info.getSupplicantState());
Log.d(getClass().getSimpleName(), state2.toString());
}
这是日志输出:
D/WifiCheckerService(24732): COMPLETED
D/WifiCheckerService(24732): OBTAINING_IPADDR
无论电话上的wifi是否显示“已连接”或“正在验证”,日志输出都是相同的,这意味着截至目前我的程序无法区分它是否处于时髦的“身份验证”状态。我需要能够区分以便能够知道何时重置wifi。任何帮助是极大的赞赏。
最佳答案
尝试这个。
ConnectivityManager conn = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo nInfo = conn.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
Log.d("MY CONNECTIVITY MANAGER: NETWORK.DETAILEDSTATE", nInfo.getDetailedState().toString());
Log.d("MY CONNECTIVITY MANAGER: NETWORK.STATE", nInfo.getState().toString());
这是我的输出(如果您在连接时输入了错误的密码)。
D / MY连通性经理:NETWORK.DETAILEDSTATE(24732):
授权D / MY连接管理器:NETWORK.STATE(24732):
连接中
第二个输出(在获取IP的同时)。
D/MY CONNECTIVITY MANAGER: NETWORK.DETAILEDSTATE(24732): OBTAINING_IPADDR
D/MY CONNECTIVITY MANAGER: NETWORK.STATE(24732): CONNECTED
第三输出(成功连接)。
D/MY CONNECTIVITY MANAGER: NETWORK.DETAILEDSTATE(24732): CONNECTED
D/MY CONNECTIVITY MANAGER: NETWORK.STATE(24732): CONNECTED
第四个输出(如果您输入了错误的密码并且无法连接)。
D/MY CONNECTIVITY MANAGER: NETWORK.DETAILEDSTATE(24732): DISCONNECTED
D/MY CONNECTIVITY MANAGER: NETWORK.STATE(24732): DISCONNECTED
第五路输出(如果WIFI处于空闲状态且已断开连接)。
D/MY CONNECTIVITY MANAGER: NETWORK.DETAILEDSTATE(24732): IDLE
D/MY CONNECTIVITY MANAGER: NETWORK.STATE(24732): DISCONNECTED
// 希望能帮助到你