android文件存储路径问题

之前有遇到过apk 文件存储报错,当时解决了,后面开发新项目又遇到老错误,只怪自己没有记录.

我们开发app 的时候,有时候会遇到需要缓存到本地问题,

调用

Environment.getExternalStorageDirectory 会报如下错误,即使你申请了权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />


                                                                                              java.lang.IllegalArgumentException: Primary directory null not allowed for content://media/external_primary/file; allowed directories are [Download, Documents]
                                                                                                        at com.android.providers.media.MediaProvider.ensureFileColumns(MediaProvider.java:4243)
                                                                                                        at com.android.providers.media.MediaProvider.ensureUniqueFileColumns(MediaProvider.java:3881)
                                                                                                        at com.android.providers.media.MediaProvider.insertFile(MediaProvider.java:4667)
                                                                                                        at com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:5253)
                                                                                                        at com.android.providers.media.MediaProvider.insert(MediaProvider.java:4953)
                                                                                                        at com.android.providers.media.MediaProvider.insertFileForFuse(MediaProvider.java:9643)
                                                                                                        at com.android.providers.media.MediaProvider.insertFileIfNecessaryForFuse(MediaProvider.java:9738)
2023-12-22 09:28:02.884     0-0     <no-tag>                kernel                               E  enabled ext spk pa on

这是因为google 缩小了权限范围,打开setting 我们发现权限确实变小了很多,选择第一个,Allow managment of all files ,就不会有上面问题.

看下源码解释

大概意思就是android 11 以后这么用就不好使了,目标文件,只能存储到相应的文件夹下,picture,music....等,

建议使用的的是具体路径DIRECTORY_DCIM 这个可以更改.

getExternalFilesDir(Environment.DIRECTORY_DCIM) 

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值