我正在使用需要权限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->单击权限,然后在溢出菜单中单击“所有权限”.
总结以上是内存溢出为你收集整理的请求的Android权限未显示在应用权限设置中全部内容,希望文章能够帮你解决请求的Android权限未显示在应用权限设置中所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)