正文共: 3785字 7图
预计阅读时间: 10分钟
![2026f3014bf75654571e1014291b1831.png](https://img-blog.csdnimg.cn/img_convert/2026f3014bf75654571e1014291b1831.png)
前言
前两天因为开发一个app更新的功能,我将从服务器下载的apk文件放在了内部存储目录(测试手机为小米,路径为:data/user/0/packagename/files)下面,然后安装的时候一直安装不了,提示解析包出错。后来查询发现,安装apk是调用了PackageInstaller,没有相关权限,这个无法获取内部路径,所以会安装不了。借机也复习了一遍Android下面存储相关的知识点,特来总结一番。
存储分类
对于Android存储目录,我总结成一张思维导图,如果有需要原图的,请在我的公众号后台回复 015 即可获取原图。上面这张图很清楚的展示了Android存储的目录,接下来我们详细分析每一个目录。
内部存储
内部存储位于系统中很特殊的一个位置,对于设备中每一个安装的 App,系统都会在 data/data/packagename/xxx 自动创建与之对应的文件夹。如果你想将文件存储于内部存储中,那么文件默认只能被你的应用访问到,且一个应用所创建的所有文件都在和应用包名相同的目录下。也就是说应用创建于内部存储的文件,与这个应用是关联起来的。当一个应用卸载之后,内部存储中的这些文件也被删除。对于这个内部目录,用户是无法访问的,除非获取root权限。
String fileDir = this.getFilesDir().getAbsolutePath();
String cacheDir = this.getCacheDir().getAbsolutePath();