Mat*_*att 9 permissions android android-6.0-marshmallow
将Android权限WRITE_EXTERNAL_STORAGE,并READ_EXTERNAL_STORAGE引发新的授予权限的Android M的对话?
小智 10
我同意Guillaume Perrot的回答.我遇到过类似的问题,当我写的权限READ_WRITE_EXTERNAL_STORAGE在AndroidManifest.xml
默认情况下,没有权限显示在应用程序中,人们需要在应用程序权限中切换存储的切换按钮.然后我将我的targetSdkVersionin 修改build.gradle为少于23(MNC)和其他相关的数字sdkVersion,安装了权限的应用程序.
另一种方法是在需要权限requestpermission的地方编写函数.代码如下:
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)==
PackageManager.PERMISSION_GRANTED) {
//do the things} else {
requestPermissions(new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },
AnyNumber);
Run Code Online (Sandbox Code Playgroud)
因为我的声誉不到15,所以我不能投票给Guillaume Perrot的答案.只需用这种方式来表达我的想法.
如果检查Android M版本,我解决了这个问题
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
requestPermissions(new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}
Run Code Online (Sandbox Code Playgroud)
根据文档:
安装时授予的有限权限:当用户安装或更新应用程序时,系统会向应用程序授予该应用程序请求的属于 PROTECTION_NORMAL 范围内的所有权限。
因此,因为 READ_EXTERNAL_STORAGE 属于 PROTECTION_NORMAL ,所以它不会触发该对话框。
但由于 WRITE_EXTERNAL_STORAGE 的级别为 PROTECTION_DANGEROUS,因此它将属于文档中描述的这种行为:
用户在运行时授予权限:当应用程序请求权限时,系统会向用户显示一个对话框,然后调用应用程序的回调函数来通知用户是否授予了权限。如果用户授予权限,则应用程序将获得该权限功能区域中在应用程序清单中声明的所有权限
以下是保护级别的来源:
| 归档时间: |
|
| 查看次数: |
29646 次 |
| 最近记录: |