前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 10.0后创建文件createNewFile()和创建文件夹mkdirs()均失败解决方案

Android 10.0后创建文件createNewFile()和创建文件夹mkdirs()均失败解决方案

作者头像
北洋
发布2021-12-08 10:10:25
3.2K0
发布2021-12-08 10:10:25
举报
文章被收录于专栏:北洋csdn

昨天往项目中添加Android自定义异常捕获的工具类时(参考Android自定义捕获Application全局异常)碰到一件很诡异的事情,createNewFile一直报no such file or directory,往前追发现是mkdir失败了(mkdirs也一样fail),网上搜了很多都说是AndroidManifest.xml中没有配置读写sd卡的权限(实际上我已经配置了),最后才定位到是android10之后不能问题。

附上我最后解决问题的关键代码段:

  1. 在AndroidManifest.xml中添加对应的权限
代码语言:javascript
复制
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  1. 在使用的地方发起请求,系统会有一个弹窗,提示是否允许读写权限
代码语言:javascript
复制
 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 222);  
  1. 选择弹窗的允许后,会触发onRequestPermissionsResult这个函数,重写这个函数,添加自己的特定需求
代码语言:javascript
复制
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (!hasAllPermissionsGranted(grantResults)) {
            return;
        }
        switch (requestCode) {
            case 222:
                Toast.makeText(getApplicationContext(), "已申请权限", Toast.LENGTH_SHORT).show();
            default:
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }

之后 在需要的地方创建文件夹,即可。

但是Android10之后Google默认不允许随意创建文件夹。这是因为Android10及之后将执行分区存储,只能操作Google规定的自己应用目录下的文件,所以要对之前的应用数据进行迁移。好在Android10是个过渡期,开发者可以使用下面三种解决方式来暂时忽略分区存储。但是Android11将强制执行分区存储。所以在Android10的时候就先对自己之前的数据做迁移吧。

解决方法有三个:

1.使用Android规定的文件夹做操作 2.将gradle中的编译环境,SDK的版本号修改到29以下 3.清单文件加入下面这句停用分区存储即可随意创建文件夹

代码语言:javascript
复制
//停用分区存储
android:requestLegacyExternalStorage="true"
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档