[英]Requested Android permissions not showing in app permission settings
我正在开发一个需要INTERNET
, WRITE_EXTERNAL_STORAGE
, ACCESS_WIFI_STATE
和CHANGE_WIFI_MULTICAST_STATE
权限的Cordova应用程序。 我已经在清单中请求了这些权限
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="27" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
INTERNET
, ACCESS_WIFI_STATE
和CHANGE_WIFI_MULTICAST_STATE
被视为正常权限,根据文档 ,Android将在安装时自动接受它们,用户无法撤消它们。
现在在Cordova创建的MainActivity
,我在if
块中添加了此代码,该块检查以确保我们在6.0或更高版本:
if (checkSelfPermission(Manifest.permission.ACCESS_WIFI_STATE) == PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.CHANGE_WIFI_MULTICAST_STATE) == PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "has permission");
}
else {
Log.d(TAG, "no permission");
requestPermissions(new String[] { Manifest.permission.ACCESS_WIFI_STATE,
Manifest.permission.CHANGE_WIFI_MULTICAST_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 0);
}
问题是,在运行5.1.1的Android设备上,这有效,当我转到应用程序的权限设置时,我会看到所有4个权限。 但是在运行7.0和7.1.1的设备上,我得到一个对话框,要求批准WRITE_EXTERNAL_STORAGE
和所有其他权限,因为它们是正常的,不会被要求批准。 它们会自动获得批准。 问题是即使我有权限,在较新的设备上我也无法做与这些权限相关的事情,如果我转到应用程序设置获取权限,我看到的是权限存储已授予。 没有INTERNET
, ACCESS_WIFI_STATE
或CHANGE_WIFI_MULTICAST_STATE
。 我没有在6.0设备上专门测试过,但我想我会遇到同样的问题。
为什么权限没有显示在权限设置中,为什么我无法执行需要这些权限的操作,即使Android说我有权限?
您链接到的文档包含以下语句:
“系统不会提示用户授予正常权限,用户也无法撤消这些权限。”
因此,除了WRITE_EXTERNAL_STORAGE
之外的所有权限将始终被授予。 您要求的唯一权限是可以撤销的权限。
为什么权限未显示在权限设置中
好吧,根据Android版本,他们可能有点难找。 例如,在运行android 7.0的模拟器上,我找到了Apps - > MyApp - > Permissions下的所有权限列表,然后单击溢出菜单中的“所有权限”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.