fileprovider方式分享_Android 11 测试版发布,附适配规范及常见问题处理方式(二)...

上期重点:Android 11 中的前台服务类型

—— 点击查看92ce3799baef00b59c02eee18af9da0c.png

本期重点:Android分区存储

Android分区存储是从Android 10开始的重要行为变更,分区存储改变了应用访问外部存储的方式、并对媒体数据进行分类以改变外部存储数据混乱的情况,同时限制对隐私数据访问限制保护用户隐私。

Android 11 对分区存储功能进行了更加严格的限制。

● 在Android 10上,无法兼容分区存储的应用可以使用 requestLegacyExternalStorage  来规避分区存储的限制。而当你的应用升级 targetSdkVersion 到 Android 11 (API 等级 30) 之后,这个标志将不再生效。

● 系统允许应用选择是否开启分区存储模型,Android 11上,将会根据应用TargetSDK来决定应用的存储模型:`应用TargetSDK >= 30,将强制打开分区存储模型。

● 当应用运行在 Android 11 系统上时,无论应用 targetSdkVersion 是什么都将无法访问其他应用的专属存储空间,例如 getExternalFilesDir() API 返回的路径。

1. 分区存储如何工作

365c679daa7690b3d24fdae0526909ea.png 上图是分区存储的总体结构。在Android 11,分区存储被分为了两大部分:共享存储空间、应用专属存储空间(Android/data、Android/obb)。存放到共享存储空间的数据可以与其他应用共享;而存放到应用专属存储空间的数据则是应用的私有数据,其他应用无法访问。 并且Google重新引入了对使用直接文件路径方式访问媒体文件的支持,用于管控共享存储空间内容,能够更加精细化的管理共享存储空间里面的数据。通过支持文件路径方式访问,能够兼容一些三方库文件和原生代码库。而应用专属存储空间,应用则无需权限即可访问自己沙盒化的应用空间,而其他应用无法访问。 2. 分区存储新权限以及新API 另外,相较于 Android 10,Android 11 在有关存储的权限和接口方面也作出了如下改进:相应的也提供了一些权限以及功能:   ● MANAGE_EXTERNAL_STORAGE为类似文件管理、手机管家等应用,提供了能访问所有共享存储空间的能力,但是依然无法访问其他应用专属存储空间。 ● 根据开发者的需求反馈,新增了MediaStore的批量处理多媒体文件接口: ○ createWriteRequest ○ createFavoriteRequest ○ createTrashRequest ○ createDeleteRequest 3. 分区存储带来什么问题 正是因为分区存储带来的这些变化,给应用适配以及应用兼容性带来了一些问题。 ● 访问其他应用应用专属存储空间 在Android 11上,所有应用都无法访问其他应用专属存储空间,三方SDK分享访问其他应用专属存储空间,将会导致分享功能失效。建议分享使用FileProvider而不是直接使用路径进行分享。 ● 直接路径访问共享存储空间新能问题 在直接路径访问带给Android更加精细化管控的同时,也带来了一个性能问题。直接路径访问共享存储空间,会带来一些性能问题。建议是通过MediaStore接口来访问共享存储空间数据。 ● SAF API限制 ○ SAF将无法选择各个Volume的根目录 ○ SAF将无法选择Downloads目录 ○ SAF将无法访问应用专属存储空间 4. 结束语 分区存储功能,从Android 10开始实施,但仍允许少部分无法兼容的应用选择豁免此项政策的限制,而Android 11则会根据 targetSdkVersion 来决定是否打开,且所有应用都不可访问其他应用的私有存储空间。通过对存储空间管理的加强,在安全性、隐私性和存储空间归属上都会有很大的改进。 5. 参考文档 Android 11 中的存储机制更新: https://developer.android.google.cn/preview/privacy/storage  
使用OPPO远程真机进行Android 11兼容测试 OPPO开放平台远程真机现已上线了搭载有Android 11 开发者预览版的测试机型——OPPO Find X2,欢迎开发者前来使用。 OPPO远程真机官网链接: https://open.oppomobile.com/newservice/capability?pagename=cloudmachine 0293c4b18b5a1a382e079f6520bbfac7.png 065a7847d6ccf4918a171bad488fd74a.png065a7847d6ccf4918a171bad488fd74a.png  An droid 11 开发者测试版适配指引
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值