连接到特定的 WiFi (Android Q)
Connect to specific WiFi (Android Q)
在我的应用程序中,我尝试自动连接到特定的 SSID(在 android Q 中)。我正在使用“WifiNetworkSpecifier”、“NetworkRequest”和“ConnectivityManager”类 来做到这一点。当我发出请求时,屏幕上会出现一个对话框,要求我连接到这个 SSID,我单击它然后连接。但是有两个问题:
没有真正连接(没有网络),我必须禁用并启用WiFi才能有机会真正连接!
当我从内存中清除应用程序时,它会自动断开连接。
我正在寻找解决这些问题的方法,但没有足够的示例或样本。
这是我在源代码中所做的:
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)
}
根据此线程 (https://support.google.com/pixelphone/thread/13670154?hl=en),这是某些设备上的已知问题,Google 将很快修复。
只需检查它是否适用于 2.4GHz SSID。希望对你有帮助。
在我的应用程序中,我尝试自动连接到特定的 SSID(在 android Q 中)。我正在使用“WifiNetworkSpecifier”、“NetworkRequest”和“ConnectivityManager”类 来做到这一点。当我发出请求时,屏幕上会出现一个对话框,要求我连接到这个 SSID,我单击它然后连接。但是有两个问题:
没有真正连接(没有网络),我必须禁用并启用WiFi才能有机会真正连接!
当我从内存中清除应用程序时,它会自动断开连接。
我正在寻找解决这些问题的方法,但没有足够的示例或样本。 这是我在源代码中所做的:
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)
}
根据此线程 (https://support.google.com/pixelphone/thread/13670154?hl=en),这是某些设备上的已知问题,Google 将很快修复。 只需检查它是否适用于 2.4GHz SSID。希望对你有帮助。