Android Q(Android 10)
之前,需要添加权限,如下:
Android Q(Android 10)
开始 在App
专属目录下本App
可以随意操作,无需申请权限,不过App
专属目录会在App
卸载时跟随删除。看下面几个目录(通过Application
的context
就可以访问)。
- getFilesDir() :/data/user/0/本应用包名/files
- getCacheDir():/data/user/0/本应用包名/cache
- getExternalFilesDir(null):/storage/emulated/0/Android/data/本应用包名/files
- getExternalCacheDir():/storage/emulated/0/Android/data/本应用包名/cache
getFilesDir
和getCacheDir
是在手机自带的一块存储区域(internal storage
),通常比较小,SD
卡取出也不会影响到,App
的sqlite
数据库和SharedPreferences
都存储在这里。所以这里应该存放特别私密重要的东西。
getExternalFilesDir
和getExternalCacheDir
是在SD
卡下(external storage
),在sdcard/Android/data/包名/files
和sdcard/Android/data/包名/cache
下,会跟随App
卸载被删除。
files
和cache
下的区别是,在手机设置-找到本应用-在存储中,点击清除缓存,cache
下的文件会被删除,files
下的文件不会。
谷歌推荐使用getExternalFilesDir
。我们项目的下载是个本地功能,下载完成后是存本地数据库的,不是放网络上的,所以下载的音视频都放到了这下面,项目卸载时跟随App都删除了。getExternalFilesDir
方法需要传入一个参数,传入null
时得到就是sdcard/Android/data/包名/files
,传入其他字符串比如"Picture"得到sdcard/Android/data/包名/files/Picture
。
参考代码如下: