一、Android 存储方式的演变
1、随着Android版本的升级,私有目录(/data/data/package/)的存储方式没有发生改变,当应用卸载之后,这部分的内容也随之删除,变化的是外置卡的存储方式,下面我们讲的内容都是针对外置卡的存储方式而言。
2、Android 9 外置卡存储方式,每个应用都可以访问,包括增删改查(当然这个APP已经申请了读写外置卡的权限)。
3、Android 10 对分区存储做了一个过渡,你可以选择分区存储也可以不选,如果在Application的节点中设置这个属性为true,requestLegacyExternalStorage=“true” 则代表不使用分区存储,就和Android 9 一样。
4、Android 11 强制进行分区存储,也是就是对每个文件夹存储那些文件内容都做了规范,比如Download目录下可以存放任何的文件,Movies(存放 MP4视频类型的文件)、Music(存放mp3音乐类型的)、Picture(存放 png、jpg图片类型的)、Documents(存放文档 txt word 等)
二、Android 存储权限的讲解
媒体文件集指的是图片、音频、视频文件
1、Android 10 中,自己的 App 无需任何权限(这里说的权限也包括 WRITE_EXTERNAL_STORAGE 和 READ_EXTERNAL_STORAGE)就能向媒体集添加文件,也可以编辑和删除自己添加的媒体文件。
如果你要读取并操作非自己应用创建的媒体文件,就需要读写外部存储权限,如果用户没有同意,你将无法编辑和删除并非自己创建的媒体文件。
2、下载文件集
用于和其他应用分享非媒体文件
你无需添加任何权限,就可以编辑和删除自己添加的非媒体文件。
与媒体不同的是,即使有读取外部存储权限,也不允许访问由其他应用创建的非媒体文件。想要获此权限,必须通过调用 Storage Access Framerwork API,启动系统文件选择器,让用户进行选择访问那些文件和目录。
三、具体的实例代码演示
Android 9 之前创建文件方式
public void createOther(View view) {
// 这个就是一个文件目录
File file = new File("/sdc