Android11及以上 文件读写权限申请

Android11及以上 文件读写权限申请

Android11 读写权限申请

Android11系统对应用写入权限做了严格的限制。本文介绍如何获取文件读写权限。项目中 build.gradle 的targetSdkVersion >= 29 ,会出现读写问题。

当targetSdkVersion = 29,通过设置requestLegacyExternalStorage=“true”,还能解决。

当targetSdkVersion = 30后,需要申请所有文件权限才能获取到写入权限。

AndroidManifest添加权限设置

tools:ignore="ScopedStorage" />

...

android:requestLegacyExternalStorage="true"

...

>

代码申请动态权限1.Android 6.0之上Android11以下申请权限

if (Build.VERSION.SDK_INT >= 23) {// 6.0

String[] perms = {

Manifest.permission.READ_EXTERNAL_STORAGE,

Manifest.permission.WRITE_EXTERNAL_STORAGE,

Manifest.permission.READ_PHONE_STATE};

for (String p : perms) {

int f = ContextCompat.checkSelfPermission(SafeKeyToolActivity.this, p);

Log.d("---", String.format("%s - %d", p, f));

if (f != PackageManager.PERMISSION_GRANTED) {

requestPermissions(perms, 0XCF);

break;

}

}

}

Android11申请权限

跳转系统设置界面,用户授权获取权限。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !isRefuse) {// android 11 且 不是已经被拒绝

// 先判断有没有权限

if (!Environment.isExternalStorageManager()) {

Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);

intent.setData(Uri.parse("package:" + getPackageName()));

startActivityForResult(intent, 1024);

}

}

// 带回授权结果

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == 1024 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {

// 检查是否有权限

if (Environment.isExternalStorageManager()) {

isRefuse = false;

// 授权成功

} else {

isRefuse = true;

// 授权失败

}

}

}

对于部分手机如小米手机,即使获取了所有文件的管理权限,依旧访问不到Android/data目录,如图:

尝试解决办法:

只在外部存储的应用私有目录下,用直接路径读写文件。

访问或者共享媒体文件,使用MediaStore在公共目录下读写文件

访问或者共享非媒体文件,使用系统的文件选择器SAF在公共目录Download下读写文件。

根目录下可以创建自定义文件夹、文件。

猜你喜欢

vivo手机一般充电多长时间(vivo手机充电多长时间?)
网络上传速度慢的原因 解决方法推荐
det365娱乐场所官方网

网络上传速度慢的原因 解决方法推荐

📅 07-08 ❤️ 718
世界上最大的苹果有多大,在哪里
365APP

世界上最大的苹果有多大,在哪里

📅 07-19 ❤️ 490
八重樱(中)
det365娱乐场所官方网

八重樱(中)

📅 07-24 ❤️ 579
传说中的北京七大邪地 – 灵异志
det365娱乐场所官方网

传说中的北京七大邪地 – 灵异志

📅 07-02 ❤️ 138
雅鲁藏布大峡谷科学考察新进展
365APP

雅鲁藏布大峡谷科学考察新进展

📅 07-14 ❤️ 779
捷达和起亚k3哪个好
365APP

捷达和起亚k3哪个好

📅 07-19 ❤️ 200
如何使用DNF深渊补丁
约彩365彩票app下载安装

如何使用DNF深渊补丁

📅 07-01 ❤️ 662
赵霁个人资料简介(身高/生日/年龄)
365APP

赵霁个人资料简介(身高/生日/年龄)

📅 07-10 ❤️ 801