【问题标题】:How to wait for WifiManager connect, and determine if OK/failed?如何等待 WifiManager 连接,并确定是否正常/失败?
【发布时间】:2014-02-12 15:21:06
【问题描述】:

我正在构建一个可以使用 WifiManager 自动添加/连接我们的 WiFi 托管硬件的应用程序,以便用户可以轻松访问其网络界面。

wifiManager.enableNetwork(i.networkId, true); 部分有效。它立即返回,并在几秒钟内连接 wifi。但是 web 界面活动立即启动,并且 WebView 很快超时:无法加载页面。

这是因为 WiFi 连接需要几秒钟的时间。我也无法通知用户连接尝试失败。

我阅读了这篇文章,在我看来,BroadcastReceiver 可以“戳”我的 wifi 连接活动以启动网络界面活动。另一个好处是还可以将失败的连接可视化。

所以,我的问题:

  • 我发现我需要一个BroadcastReceiver 来代表WifiManager.SUPPLICANT_STATE_CHANGED_ACTIONWifiManager.NETWORK_STATE_CHANGED_ACTION
  • 何时注册和取消注册?
  • 我可以/我可以只放置一个循环来检查介于两者之间的状态机(和超时)吗,或者这是一个糟糕的设计,为什么?

我希望这可以在我的应用程序实例中完成.. 或者这会在 wifi 尝试连接时退出应用程序时固有地导致错误?

编辑:

至于代码;我完全像这样使用 WifiManager:How do I connect to a specific Wi-Fi network in Android programmatically?

以 Android 4.1.2 为目标,并在活动中使用片段来回收视图/状态实例。

【问题讨论】:

  • 连接部分 - 一些新的答案可能会出现here - 如果没有,请点击相关链接。确定失败?不知道,也许超时?

标签: android broadcastreceiver android-wifi wifimanager


【解决方案1】:

您应该收听 WifiManager.NETWORK_STATE_CHANGED_ACTION 并检查您已连接的 Intent 中包含的 NetworkInfo 对象。

什么时候注册:不看代码很难说,但你可以在调用wifiManager.enableNetwork之前注册

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-13
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2018-01-29
    相关资源
    最近更新 更多