栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android不同版本SD卡存储权限解决

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android不同版本SD卡存储权限解决

1.Android6.0之前:
  • 6.0之前是不需要动态申请权限的,直接在manifest中申请即可以正常使用。

    
    ...

  • 代码使用
private void writeFile() throws IOException {
        String absolutePath = Environment.getExternalStorageDirectory().getAbsolutePath();
        File file = new File(absolutePath + File.separator + "a.txt");
        if (file.exists()) {
            file.delete();
            ToastUtil.showCenterToast("文件存在,删除成功");
        } else {
            file.createNewFile();
            ToastUtil.showCenterToast("文件不存在,创建成功");
        }
    }
2.Android 6.0 SDK=23 及以上
  • 动态申请权限;
 if (ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}else{
     writeFile();
}

在返回的结果里面进行判断,如果给予了权限,则进行写入操作。

 @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(requestCode==1 && (grantResults[0] == PackageManager.PERMISSION_GRANTED)){
            writeFile();
        }
    }
3. Android 10 SDK=29

1.targetSdkVersion<29 的应用程序默认带有requestLegacyExternalStorage=true属性。不需要额外处理。

2.targetSdkVersion>=29,需要在manifest的application中进行申请使用:


>
4.Android 11 ,12

安卓11的时候继续强化对SD卡读写的管理,引入了MANAGE_EXTERNAL_STORAGE权限,而之前的WRITE_EXTERNAL_STORAGE已经失效了。

并且MANAGE_EXTERNAL_STORAGE权限只能跳转设置页面申请。

 if (sdkInt >= 30) {
                if (!Environment.isExternalStorageManager()) {
                    Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
                    startActivity(intent);
                    return;
                }
                writeFile();
                return;
            }
问题:

android studio 一般报错日志:java.io.IOException: Operation not permitted

参考链接:

sd卡读写权限问题

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/862924.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号