安卓11 Sdcard文件读取权限问题

Posted 666小奇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓11 Sdcard文件读取权限问题相关的知识,希望对你有一定的参考价值。

谷歌在安卓11更新了外部储存设备读写规范问题。

在这里给新手进行一下排雷

  1. 首先用 file.exists() 判断文件是否可以读写是不可取的,因为新版本安卓中判断文件存在和能否读取权限是不一样的。
  2. 如果想共享程序数据可以选择临时目录作为中间站,方便读取,公共媒体目录是一个不错的选择,这个目录权限要比其他目录权限容易申请一些。
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).toString();
  1. 使用 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文件读取权限问题的主要内容,如果未能解决你的问题,请参考以下文章

android Q sdcard权限详解

安卓用户权限--挂载的sdcard有读写权限

Unity读取Android SDcard文件

Android 开发中eclipse 下 DDMS 视图中 sdcard 中文件导入的处理

安卓手机sd卡的路径在哪

安卓开发:sd卡操作