android - 如何等待 WifiManager 连接,并确定是否成功/失败?

标签 android broadcastreceiver android-wifi wifimanager

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

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

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

我仔细阅读了这篇文章,在我看来,BroadcastReceiver 可以“戳”我的 wifi 连接 Activity 以启动网络界面 Activity 。额外的好处是还可以可视化失败的连接。

所以,我的问题:

  • 我发现我需要一个 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,我在 Activity 中使用 fragment 来回收 View /状态实例。

最佳答案

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

何时注册:如果没有看到您的代码很难说,但您可能会在调用 wifiManager.enableNetwork

之前注册

关于android - 如何等待 WifiManager 连接,并确定是否成功/失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21731995/

相关文章:

php - 我将如何防止在 MySQL 数据库上运行查询并以 JSON 格式输出的 PHP Web 服务脚本的热链接?

android - 显示来自 Receiver 的 AlertDialog

android - 在 Android 4.2.x 中自动启用 Wi-fi 定位

android - 如何在 API 8 的 Android 应用程序中显示可用 wifi 列表?

android - WiFi Direct 是正确的选择吗?尝试制作聊天应用程序 - Android

android - Flutter - Navigator.pushNamed 使应用程序在调用路线时崩溃(在 FutureBuilder 内)

android - Sqlite如何使用游标获取字符串项

android - 以编程方式连接到蓝牙设备

android - flutter 插件 : Send data from Android BroadcastReceiver to Flutter code

java - CONNECTIVITY_ACTION 广播接收器不工作