android-wifi - Wi-Fi 网络请求 API 中的对话框

标签 android-wifi android-10.0 android-connectivitymanager

我正在使用新的 API 29 将设备连接到 Android 10 设备中的 wifi 网络:

    private val connectivityManager: ConnectivityManager by inject()

    override fun connectToNetwork(ssid: String, password: String) {
        val networkRequest = buildNetworkRequest(ssid, password)

        val networkCallback =
            object : NetworkCallback() {
                override fun onAvailable(network: Network) {
                    super.onAvailable(network)
                    Timber.d("Connected to network $ssid")
                }

                override fun onUnavailable() {
                    super.onUnavailable()
                    Timber.e("Unable to connect to network $ssid")
                }
            }

        connectivityManager.requestNetwork(networkRequest, networkCallback, CONNECTION_TIME_OUT)

    }

    private fun buildNetworkRequest(ssid: String, password: String) =
        NetworkRequest.Builder()
            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
            .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
            .setNetworkSpecifier(buildWifiNetworkSpecifier(ssid, password))
            .build()

    private fun buildWifiNetworkSpecifier(ssid: String, password: String) =
        WifiNetworkSpecifier.Builder()
            .setSsid(ssid)
            .setWpa2Passphrase(password)
            .build()

将出现一个对话框,其中包含“要使用的设备”,并列出了指定的 wifi 网络。该对话框有“取消”和“连接”两个按钮。当我点击“连接”时,设备连接到 wifi 网络(我可以在系统设置中看到)并且连接按钮被禁用。

但是对话框并没有消失,并且 requestNetwork 回调中的任何方法都没有被调用。最终我达到了指定的超时时间,另一个对话框出现了“出现问题。应用程序已取消选择设备的请求”。

这里发生了什么?我想连接到网络并调用回调中的“onAvailable”或“onUnavailable”方法。

最佳答案

在尝试了几乎所有事情之后,我终于设法按预期完成了这项工作。不知道为什么,但是当我进入设备的系统设置并忘记我试图以编程方式连接的 wifi 网络时,这开始起作用了。

我很高兴我摆脱了这个问题,但我不知道是什么导致了它,而且 future 的用户可能会遇到同样的事情。

关于android-wifi - Wi-Fi 网络请求 API 中的对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59784567/

相关文章:

ftp - Wificonfiguration 已弃用 Android 10

android - WIFI Direct 和 3G 数据 session 可以同时工作吗?

android - 如何检查我是否连接到某个 wifi 网络?

android - 从 Android 22 开始,如何同步检索某些传输类型的网络状态?

android - 尝试在 android 11 上获取网络功能时出现安全异常

java - 如何自动连接指定SSID的WiFi?

java - 手动更改语言在三星设备上不起作用

java - 如何在 Android 10 中打开 Activity (传入 voip 调用)

android - 如何在 Android Q 中请求外部文件访问权限?

android - 如何检测Android应用程序中的慢速互联网连接