gpt4 book ai didi

即使授予位置权限,Android 11 wifi SSID 在后台也是未知的

转载 作者:行者123 更新时间:2023-12-04 23:57:43 26 4
gpt4 key购买 nike

我在 Android 11 中测试了这段代码

val networkRequest = NetworkRequest.Builder().apply {
addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
}.build()

connectivityManager.registerNetworkCallback(networkRequest, object : ConnectivityManager.NetworkCallback() {

override fun onAvailable(network: Network) {
super.onAvailable(network)
val wifiName = getCurrentlyConnectedName() ?: return
val wifiMac = getCurrentlyConnectedMac() ?: return
Timber.d("WifiStateManager onAvailable() called with: network = [$wifiName]")
}

override fun onLost(network: Network) {
super.onLost(network)
Timber.d("WifiStateManager onLost() called with: network = [$network]")
}
})

并注意到一个奇怪的行为。当应用程序处于后台时 wifi ssid总是 <unknown> (请注意,100% 授予位置权限)。当应用程序在前台时,一切正常,我得到正确的 wifi ssid .

为什么会这样?如何在 Android 11 上即使应用程序处于后台也能获取 wifi SSID?

最佳答案

很奇怪,这还没有早点得到回答。

位置权限现在在 Android 11+ 上具有后台访问的特殊情况。可以授予一个应用程序访问位置权限,但只能在前台。后台位置权限需要在 Play Console 上发布特殊请求,并获得相应的权限:

android.permission.ACCESS_BACKGROUND_LOCATION

从定位 API 29 开始,我相信这在 Play 商店中已经是强制性的。

关于即使授予位置权限,Android 11 wifi SSID 在后台也是未知的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65180052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com