安卓系统手机有一套自己的存储管理制度:几乎任何类型的存储设备都被称为“外部存储”(external storage),包括内部的NAND闪存,这个叫做“主要存储”(primary storage),而其他的一切都是“次要存储”(secondary storage),比如SD卡。
随着安卓系统的不断升级,第三方应用对存储的访问权限控制经过了多次调整,详细三说起来就复杂了,这里重点说最早、最常用的写入要求权限“WRITE_EXTERNAL_STORAGE”,它可以让应用写入主要存储(内置闪存),但不能写入次要存储(SD卡)。
安卓4.4里边,对于对所有外部存储,其上的文件属性都改为基于文件夹结构,应用无需获取WRITE_EXTERNAL_STORAGE权限,即可在外部存储上管理与自己包名相关的文件夹。举例来说,如果应用的包名是name com.example.foo,那么外部存储上的Android/data/com.example.foo/文件夹就是它的了,可随意访问。
另外需要特别注意的是,应用卸载的时候,在SD卡上创建的相应文件夹、数据都会被同时完全删除,所以如果有照片、文档等个人资料,应当避免这么做
应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。
大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。
这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。
如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?
通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。
而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项
Android 外部储存和内部储存 安卓外部存储读写权限
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Android9.0 vold初始化及外部存储器挂载浅析
Android9.0 vold初始化及外部存储器挂载浅析
android Android 初始化 -
php获取外部环境变量的几种方式
php环境变量的使用
环境变量 php windows操作系统 -
java Stable悬浮窗
write once ,run anywhere .java文件需要先<h3>编译</h3>----》.class文件 Windows的DOS命令,其实是Windows系统的cmd命令,它是由原来的MS-DOS系统保留下来的。&nb
java Stable悬浮窗 编码字符集 源文件 Windows