【发布时间】:2014-02-12 15:21:06
【问题描述】:
我正在构建一个可以使用 WifiManager 自动添加/连接我们的 WiFi 托管硬件的应用程序,以便用户可以轻松访问其网络界面。
wifiManager.enableNetwork(i.networkId, true); 部分有效。它立即返回,并在几秒钟内连接 wifi。但是 web 界面活动立即启动,并且 WebView 很快超时:无法加载页面。
这是因为 WiFi 连接需要几秒钟的时间。我也无法通知用户连接尝试失败。
我阅读了这篇文章,在我看来,BroadcastReceiver 可以“戳”我的 wifi 连接活动以启动网络界面活动。另一个好处是还可以将失败的连接可视化。
所以,我的问题:
- 我发现我需要一个
BroadcastReceiver来代表WifiManager.SUPPLICANT_STATE_CHANGED_ACTION或WifiManager.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