【Android】存储读取权限管理理解和api 调研报告

背景

工作和学习需要了解android 权限管理和 对应的api 调用逻辑。

学习

【Android】存储读取权限管理理解和api 调研报告_第1张图片

内部路径 不用权限

【Android】存储读取权限管理理解和api 调研报告_第2张图片

/data/data/应用包名
【Android】存储读取权限管理理解和api 调研报告_第3张图片

相关API Context 类

getCacheDir 缓存路径

【Android】存储读取权限管理理解和api 调研报告_第4张图片

getCodeCacheDir

【Android】存储读取权限管理理解和api 调研报告_第5张图片
示意路径
【Android】存储读取权限管理理解和api 调研报告_第6张图片

getFilesDir

内部文件 文件路径
【Android】存储读取权限管理理解和api 调研报告_第7张图片
【Android】存储读取权限管理理解和api 调研报告_第8张图片

fileList (files 下的所有文件名)

【Android】存储读取权限管理理解和api 调研报告_第9张图片
相关的openFileInputopenFileOutput就是直接在files文件夹读写某个文件:
【Android】存储读取权限管理理解和api 调研报告_第10张图片

getDataDir 不常用

【Android】存储读取权限管理理解和api 调研报告_第11张图片

外部存储

公共目录 Environment 类 - 需要权限【Android】存储读取权限管理理解和api 调研报告_第12张图片

需要在manifest xml 配置和request Permission 哦~

getExternalStorageDirectory

【Android】存储读取权限管理理解和api 调研报告_第13张图片
注意这个不能保证该接口有效,得调用上述的state 看看状态。获取的路径就是如下:
【Android】存储读取权限管理理解和api 调研报告_第14张图片

getExternalStoragePublicDirectory

具体的对应文件夹 【Android】存储读取权限管理理解和api 调研报告_第15张图片

例如:

//输出:/storage/emulated/0/Music

Log.d("DaMai",Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getPath();

私有目录 Context类 - 不需要权限

【Android】存储读取权限管理理解和api 调研报告_第16张图片
路径:私有目录地址:/storage/emulated/0/Android/data/应用包名
【Android】存储读取权限管理理解和api 调研报告_第17张图片

getExternalCacheDir

【Android】存储读取权限管理理解和api 调研报告_第18张图片

getExternalFilesDir

【Android】存储读取权限管理理解和api 调研报告_第19张图片

        File file = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsoluteFile();

【Android】存储读取权限管理理解和api 调研报告_第20张图片
使用方式和内部存储的差不多,不过路径不一样罢了。

注意版本权限

·WRITE_EXTERNAL_STORAGE在android11 之后就不再支持了。。
【Android】存储读取权限管理理解和api 调研报告_第21张图片
高版本中使用存储权限可以 用如下的配置:
【Android】存储读取权限管理理解和api 调研报告_第22张图片

READ_MEDIA_AUDIO,
READ_MEDIA_IMAGES,
READ_MEDIA_VIDEO

文章参考

你可能感兴趣的:(android代码小结,知识分享,代码备忘录,android)