ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

请求的Android权限未显示在应用权限设置中

2019-11-09 05:27:32  阅读:280  来源: 互联网

标签:android-permissions cordova android


我正在使用需要权限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被视为普通权限,根据docs,它们将在安装时被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表示我具有权限,我也无法执行需要这些权限的操作?

解决方法:

链接到的documentation包含以下语句:

“系统不会提示用户授予普通权限,并且用户无法撤消这些权限.”

因此,将始终授予除WRITE_EXTERNAL_STORAGE之外的所有权限.您唯一需要的许可就是可以撤销的许可.

Why are the permissions not showing in the permission settings

好吧,取决于Android版本,可能会很难找到它们.例如,在运行android 7.0的模拟器上,我在Apps->下找到了所有权限的列表. MyApp->单击权限,然后在溢出菜单中单击“所有权限”.

enter image description here

标签:android-permissions,cordova,android
来源: https://codeday.me/bug/20191109/2011841.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有