2

我花了几天时间试图弄清楚我的安卓手机在学校的 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。任何帮助是极大的赞赏。

4

1 回答 1

1

试试这个。

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 CONNECTIVITY MANAGER:NETWORK.DETAILEDSTATE(24732):验证 D/MY CONNECTIVITY MANAGER:NETWORK.STATE(24732):CONNECTING

第二个输出(在获取 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

第 4 个输出(如果您输入了错误的密码并且连接失败)。

D/MY CONNECTIVITY MANAGER: NETWORK.DETAILEDSTATE(24732): DISCONNECTED
D/MY CONNECTIVITY MANAGER: NETWORK.STATE(24732): DISCONNECTED

第 5 个输出(如果 WIFI 处于空闲状态且已断开连接)。

D/MY CONNECTIVITY MANAGER: NETWORK.DETAILEDSTATE(24732): IDLE
D/MY CONNECTIVITY MANAGER: NETWORK.STATE(24732): DISCONNECTED

// 希望能帮助到你

于 2011-11-08T16:00:38.693 回答