我花了几天时间试图弄清楚我的安卓手机在学校的 wifi 出了什么问题。学校 wifi 是使用 PEAP 的 802.1x EAP。需要用户名、密码。
我有两部 Android 手机,并且在它们上面运行了许多不同的 ROM,所以我知道这不仅仅是 ROM 特定的问题。我目前在 Mytouch 3g fender ed 上运行 2.2.1。我的手机没有数据计划,所以我关闭数据。我只用wifi。
我遇到的问题是,在我连接到 wifi 后,有一段时间一切都很好,但很快(可能 15 分钟到一个小时后),我会打开手机,当我看到 wifi 连接时,它说正在验证它一直卡在那里,直到我重置它。如果我尝试使用普通 HTTP 上网,它可以正常工作,但如果我尝试运行任何需要 wifi 连接的应用程序,它们会给出错误消息,指出存在网络连接(例如 Google 语音搜索会显示“连接问题”)。Feeds 无法更新,gmail 不会更新等。重置连接后,wifi 再次正常工作。我不确定为什么会这样。我认为这与学校的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 显示 Connected 还是 Authenticating,日志输出都是相同的,这意味着我的程序现在无法区分它是否处于时髦的“authentication”状态。我需要能够区分才能知道何时重置 wifi。任何帮助是极大的赞赏。