本文将介绍 Android Q 的部分适配问题,也是大家开发适配过程中大概率会遇到的问题:
- Q 行为变更:所有应用 (不管 targetSdk 是多少,对所有跑在 Q 设备上的应用均有影响)
- Q 行为变更:以 Android Q 为目标平台的应用(targetSDK == Q 才有影响)
- 项目升级遇到的问题
至于 Q 的新功能及 SDK,项目中并没有涉及,故暂不介绍,只放出链接 AndroidQ 新 API 及功能。
https://developer.android.com/preview/features
Q 行为变更:所有应用
注意: 早期测试版本中引入的专门用于操作媒体文件的权限
* READ_MEDIA_IMAGES,
* READ_MEDIA_AUDIO,
* READ_MEDIA_VIDEO – 现已过时!
为了能给用户提供对文件的更多控制并限制文件混乱,Android Q 改变了应用程序访问设备外部存储上文件的方式,例如存储在路径/ sdcard 中的文件。Android Q 继续使用 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限,这些权限对应于存储面向用户的运行时权限。但是,默认情况下 targetSdkVersion 设置为 Android Q 的应用(以及 manifest 清单开启属性来启动这个变更的应用)会获得一个沙盒视图到外部存储。此类应用程序只能看到其特定于应用程序的目录和特定媒体类型,因此应用程序不需要请求任何其他用户权限。
也就是说从 Android Q(10.0) sdk>=29 开始,系统为每个 app 提供了一个隔离环境(分区存储),参考下列资料,有十分详细的说明,这里给出解决办法
参考资料:
开发者文档 https://developer.android.google.cn/training/data-storage/files/external-scoped?hl=zh_cn
解决办法
① 在 AndroidManifest.xml 中加入 android:requestLegacyExternalStorage=“true”
加入这句代码之后会启动兼容模式:停用分区存储,但是要留意的是
警告:2020 年,主要平台版本将要求所有应用都使用分区存储,无论应用的目标 SDK 级别是多少。因此,您应该提前确保您的应用能够使用分区存储。为此,请确保针对搭载 Android 10(API 级别 29)及更高版本的设备启用了该行为。
在您的应用完全兼容分区存储之前,您可以根据应用的目标 SDK 级别或 requestLegacyExternalStorage 清单属性,暂时选择停用分区存储:
以 Android 9(API 级别 28)或更低版本为目标平台。
如果以 Android 10 或更高版本为目标平台,请在应用的清单文件中将 requestLegacyExternalStorage 的值设为 true:
<manifest ... >
<!-- This attribute is "false" by default on apps targeting
Android 10 or higher. -->
<application android:requestLegacyExternalStorage="true" ... >
...
</application>
</manifest>
注意:如果某个应用在安装时启用了传统外部存储,则该应用会保持此模式,直到卸载为止。无论设备后续是否升级为搭载 Android 10 或更高版本,或者应用后续是否更新为以 Android 10 或更高版本为目标平台,此兼容性行为均适用。
要测试以 Android 9 或更低版本为目标平台的应用在使用分区存储时的行为,您可以通过将 requestLegacyExternalStorage 的值设为 false 来选择启用该行为。
② 访问媒体文件,使用 MediaStore。
③ 访问其他应用创建的任何其他文件,使用系统提供的存储访问框架
但各位可以在开发者文档中找到相关的解决方法
开发者帮助文档:有关 AndroidQ 的适配资料
华为开发者帮助文档:https://developer.huawei.com/consumer/cn/doc/50127
请注意,华为开发者帮助文档里边有些方法已经过时,测试版时使用的方法在正式版中可能无法使用,如
早期测试版本中引入的专门用于操作媒体文件的权限
- READ_MEDIA_IMAGES,
- READ_MEDIA_AUDIO,
- READ_MEDIA_VIDEO
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于