最近遇到这么一个情况,就是一个App以前都是在SD卡根目录直接新建了一个XXX/image/
目录,来保存图片缓存的,但是如果适配到Android6.0,我们就需要弹出对话框给用户,来申请WRITE_EXTERNAL_STORAGE
权限,如果仅仅是缓存图片为了提高加载速度,对于一个小白用户来讲,好像并不是什么值得让他授权的理由。。。
下面记录一下我是怎么处理的,其实这次处理也不能叫做Android6.0权限适配了,不过对于WRITE_EXTERNAL_STORAGE
这个权限而言,的确有一些需要注意的地方(坑)使我们以前没有关心的。
首先,App在手机上保存文件或者缓存数据时,我认为应该遵守以下几点:
- 1.不要随意占用用户的内置存储。
- 2.不要随意在SD卡上新建目录,应该放置自己应用包名对应的扩展存储目录下,卸载App时可以被自动清除。
- 3.对占用的磁盘空间有上限,并按照一定的策略进行清除。
Android下有哪些文件目录
在Android系统中,根据调用的系统API接口,有3种目录可以给我们写入文件:
- 1.应用私有存储(内置存储)
- 获取方式:
Context.getFileDir()
:获取内置存储下的文件目录,可以用来保存不能公开给其他应用的一些敏感数据如用户个人信息Context.getCacheDir()
:获取内置存储下的缓存目录,可以用来保存一些缓存文件如图片,当内置存储的空间不足时将系统自动被清除(然而具体多大,清除时的策略我也没查到。。)
- 绝对路径:
Context.getFileDir()
:
- 获取方式: