我正在构建一个可以使用 WifiManager 自动添加/连接我们的 WiFi 托管硬件的应用程序,以便用户可以轻松访问其网络界面。
wifiManager.enableNetwork(i.networkId, true);
部分有效。它立即返回并在几秒钟内连接 wifi。但是 Web 界面 Activity 立即启动并且 WebView 很快超时:无法加载页面。
这是因为 WiFi 连接需要几秒钟。我也无法通知用户连接尝试失败。
我仔细阅读了这篇文章,在我看来,BroadcastReceiver
可以“戳”我的 wifi 连接 Activity 以启动网络界面 Activity 。额外的好处是还可以可视化失败的连接。
所以,我的问题:
- 我发现我需要一个
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,我在 Activity 中使用 fragment 来回收 View /状态实例。
最佳答案
您应该听取 WifiManager.NETWORK_STATE_CHANGED_ACTION
并检查您已连接的 Intent 中包含的 NetworkInfo
对象。
何时注册:如果没有看到您的代码很难说,但您可能会在调用 wifiManager.enableNetwork
关于android - 如何等待 WifiManager 连接,并确定是否成功/失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21731995/