Jas*_*sby 4 android cordova android-permissions
我正在开发一个需要权限INTERNET、WRITE_EXTERNAL_STORAGE、ACCESS_WIFI_STATE和 的Cordova 应用程序CHANGE_WIFI_MULTICAST_STATE。我已在清单中请求这些权限,如下所示
<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" />
Run Code Online (Sandbox Code Playgroud)
INTERNET、ACCESS_WIFI_STATE、 和CHANGE_WIFI_MULTICAST_STATE被视为正常权限,根据文档,它们将在安装时被 Android 自动接受,并且用户无法撤销它们。
现在,在MainActivityCordova 创建的代码中,我在一个块中添加了以下代码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);
}
Run Code Online (Sandbox Code Playgroud)
问题是,在运行 5.1.1 的 Android 设备上,此方法有效,并且当我转到应用程序的权限设置时,我会看到所有 4 个权限。但是,在运行 7.0 和 7.1.1 的设备上,我收到一个对话框,要求批准WRITE_EXTERNAL_STORAGE和所有其他权限,因为它们是正常的,因此不会要求批准。它们会自动获得批准。问题是,即使我拥有权限,在较新的设备上我也无法执行与这些权限相关的操作,并且如果我进入应用程序设置获取权限,我看到的只是授予的权限存储。没有什么INTERNET,,ACCESS_WIFI_STATE或CHANGE_WIFI_MULTICAST_STATE。我没有专门在 6.0 设备上进行测试,但我想我也会遇到同样的问题。
为什么权限设置中没有显示权限,为什么我无法执行需要这些权限的操作,即使 Android 说我有权限?
| 归档时间: |
|
| 查看次数: |
6352 次 |
| 最近记录: |