为什么我会"请求允许使用WLAN.允许?" 在真正的手机中提示窗口?

Hel*_*oCW 6 android kotlin

我使用代码A来设置WiFi的启用状态,当我在Android Studio 3.1.3中使用带有API 26和API 23的Android Emulator时,它运行良好,并且没有提示窗口!

但是我得到一个提示窗口"一个应用程序请求允许使用WLAN.允许吗?" 当我运行代码A时,在Android 5.1的真实手机中

如何让提示窗口不显示在真正的手机中?谢谢!

顺便说一句,真正的手机是搭载Android 5.1的三星SM-J5008

提示窗口

在此输入图像描述

我已经设置了权限

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
Run Code Online (Sandbox Code Playgroud)

代码A.

fun setWiFi(aWiFiDef: WiFiDef): Unit{
    val wifiManager =mContext.applicationContext.getSystemService(WIFI_SERVICE) as WifiManager
    wifiManager.isWifiEnabled=aWiFiDef.status        
}
Run Code Online (Sandbox Code Playgroud)

Den*_*Loh 2

Android 5.1 没有这样的运行时权限,所以我认为这是一个错误实现的权限请求理性,即使应用程序不需要,也会显示出来。您写道,您使用 API 级别 26 和 23(即 Android 6.0 及更高版本)进行了测试,因此这些版本已经具有运行时权限。也许你还没有看到这个问题,因为你没有在Android 6.0以下的设备上测试过......

请检查您是否在某处调用AppCompat.shouldShowRequestPermissionRationale(),以及是否包含 SDK 级别检查或至少按照checkSelfPermission此处所述进行检查: https: //developer.android.com/training/permissions/requesting。使用 Android 5.1 和 Android 6.0 在模拟器中测试您的代码。那么您应该也能够在真实手机上重现该问题。