安卓11 Sdcard文件读取权限问题
Posted 666小奇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓11 Sdcard文件读取权限问题相关的知识,希望对你有一定的参考价值。
谷歌在安卓11更新了外部储存设备读写规范问题。
在这里给新手进行一下排雷
- 首先用
file.exists()
判断文件是否可以读写是不可取的,因为新版本安卓中判断文件存在和能否读取权限是不一样的。 - 如果想共享程序数据可以选择临时目录作为中间站,方便读取,公共媒体目录是一个不错的选择,这个目录权限要比其他目录权限容易申请一些。
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).toString();
- 使用 XXPermissions框架 真的可以帮你快速解决问题!
XXPermissions.with(this)
// 不适配 android 11 可以这样写
//.permission(Permission.Group.STORAGE)
// 适配 Android 11 需要这样写,这里无需再写 Permission.Group.STORAGE
.permission(Permission.MANAGE_EXTERNAL_STORAGE)
.request(new OnPermissionCallback()
@Override
public void onGranted(List<String> permissions, boolean all)
if (all)
toast("获取存储权限成功");
@Override
public void onDenied(List<String> permissions, boolean never)
if (never)
toast("被永久拒绝授权,请手动授予存储权限");
// 如果是被永久拒绝就跳转到应用权限系统设置页面
XXPermissions.startPermissionActivity(MainActivity.this, permissions);
else
toast("获取存储权限失败");
);
以上是关于安卓11 Sdcard文件读取权限问题的主要内容,如果未能解决你的问题,请参考以下文章