android 8.0系统创建文件夹失败

本文详细介绍了在Android 8.0系统中遇到的创建文件夹失败问题,作者通过真机调试发现,即使已申请读取外部存储权限,仍需单独申请写入权限。文章提供了修改后的动态权限申请代码示例,帮助开发者解决类似问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8.0出来后一直没有用过,最近的几个项目集中性的反馈了几个8.0手机的bug,直到今天公司弄来了一台8.0的手机,终于可以真机调试一下。发现问题很简单,就是创建文件夹失败,mkdir()返回false。
可是我明明申请了权限的,也做了6.0以上系统动态申请权限的判断。

        if (Build.VERSION.SDK_INT >= 23 && checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
         != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1);
        }

弄了半天发现原来8.0系统如果要创建文件夹的话,必须申请写的权限,本来读写是一体的,申请了读的权限,写的权限也就申请了。不知道8.0系统修改了这个机制是出于什么目的······,知道原因就好解决了,将动态申请权限的代码改为下面的即可:

        if (Build.VERSION.SDK_INT >= 23 && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
         != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值