有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java连接到特定WiFi(Android Q)

在我的应用程序中,我试图自动连接到特定的SSID(在安卓 Q中)。我正在使用“WifineTworksSpecifier”、“NetworkRequest”和“ConnectionManager”类来实现这一点。当我发出请求时,屏幕上会出现一个对话框,要求我连接到此SSID,我单击,然后它会连接。但有两个问题:

  1. 它没有真正连接(没有互联网),我必须禁用并启用WiFi才能真正连接

  2. 当我从内存中清除应用程序时,它会自动断开连接

我希望解决这些问题,但没有足够的例子或样本。 这就是我在源代码中所做的:

fun connectToWifi(networkSSID: String, networkPassword: String?, bssid: String?)
        val specifier = WifiNetworkSpecifier.Builder()
            .setSsid(networkSSID)
        if (networkPassword != null) {
            specifier.setWpa2Passphrase(networkPassword)
        }
        if (bssid != null) {
            specifier.setBssid(MacAddress.fromString(bssid))
        }
        val request = NetworkRequest.Builder()
            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
            .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
            .setNetworkSpecifier(specifier.build())
            .build()
        val connectivityManager =
            singletonArgument.context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val networkCallback = object : ConnectivityManager.NetworkCallback() {
            override fun onAvailable(network: Network?) {
                Log.d(TAG, "network available")
            }

            override fun onUnavailable() {
                Log.d(TAG, "network unavailable")
            }
        }
        connectivityManager.requestNetwork(request, networkCallback)
}

共 (1) 个答案