Android 6.0 和 7.0 储存空间适配小结
2017-09-28 11:44
363 查看
FileProvider 配置
FileProvider 所支持的几种 path 类型,权且记录一下,写 file_paths 的时候是不会自动提示的。从 Android 官方文档上可以看出 FileProvider 提供以下几种 path 类型:
<files-path path=""name="camera_photos" />
该方式提供在应用的内部存储区的文件 / 子目录的文件。它对应 Context.getFilesDir 返回的路径:eg:”/data/data / 包名 / files”。
<cache-path name="name" path="path" />
该方式提供在应用的内部存储区的缓存子目录的文件。它对应 getCacheDir 返回的路径:eg:“/data/data / 包名 / cache”;
<external-path name="name" path="path" />
该方式提供在外部存储区域根目录下的文件。它对应 Environment.getExternalStorageDirectory 返回的路径:eg:”/storage/emulated/0”;
<external-files-path name="name" path="path" />
该方式提供在应用的外部存储区根目录的下的文件。它对应 Context#getExternalFilesDir(String) Context.getExternalFilesDir(null) 返回的路径。eg:”/storage/emulated/0/Android/data / 包名 / files”。
<external-cache-path name="name" path="path" />
该方式提供在应用的外部缓存区根目录的文件。它对应 Context.getExternalCacheDir() 返回的路径。eg:”/storage/emulated/0/Android/data / 包名 / cache”。
规避申请储存空间权限
程序包名下的 file 和 cache 目录在 SDK 19 + 是不需要储存空间权限的,并且 23 + 的动态获取权限也不需要申请。那么我们就不必将所有内容都放在公共 SD 卡上,避免使用储存空间时要求用户动态授权的一系列麻烦。另外我尝试了将储存空间权限限制在 19 以下,发现这样并不可以,小米 MIUI8 上直接报无权限错误了。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18"/>
在手机上储存内容的时候常见的是以下几种情况
缓存图片,临时数据 ——> 内部存储区的缓存子目录,防止被其他应用或用户访问
下载的更新安装包 ——> 外部缓存区根目录,需要交给安装程序访问进行安装
程序的运行日志,持久化储存的数据,插件包 ——> 内部存储区的文件子目录,防止被其他应用访问,并且不会因为系统控件不足而被清理。日志应上传后手动清理。
需要与特定程序交互的持久化数据 ——> 外部文件区子目录,这个需求也是比较少的,比如为家族产品定制的数据格式文件。
用户可访问的公开数据,照片,文档等 ——> 公共储存空间, SDK 23 + 必须申请授权访问。
相关文章推荐
- 项目android 6.0,7.0 版本适配问题
- Android 拍照和图库功能(适配Android 6.0和7.0系统和华为机型问题)
- android app版本升级(DownloadManager、适配6.0、7.0)
- Android调用系统相机、相册功能,适配6.0权限获取以及7.0以后获取URI(兼容多版本)
- 【适配整理】Android 7.0 调取系统相机崩溃解决android.os.FileUriExposedException
- 史前巨作之 Android 5.0 6.0 7.0 版本 调用相机闪退的完美解决方案
- Android 8.0 7.0 6.0 动态权限管理方案
- 关于Android6.0/7.0权限,以及7.0调用相机和切图的解决办法
- android代码连接到指定wifi,适合5.0,6.0,7.0系统
- Android 6.0 权限适配(PermissionsDipatcher)
- Android权限管理之RxPermission解决Android 6.0 适配问题
- Android适配方案小结(一)
- Android实现拍照及图片裁剪(6.0以上权限处理及7.0以上文件管理)
- android Bugly升级SDK适配Android 7.0
- android 7.0 PopupWindow中ShowAsDropDown()方法不适配的解决方案
- 极其方便的系统原生图片选取库,已适配Android 7.0
- Android 7.0 介绍和适配问题
- android 7.0 拍照 适配
- Android进阶封装之一个类实现兼容Android 6.0权限、适配Android7.0 拍照: 相机与相册上传图片就用我好啦!
- Android调用系统相机、图库、裁剪图片并压缩上传(适配7.0)