Android 11 在权限隐私、行为变更、非SDK接口等方面做了比较大的调整,如分区存储,单次权限,后台位置权限限制,这些都可能导致您的应用出现兼容性问题,请开发者务必重视,尽快完成适配工作!
OPPO系统兼容性团队已完成对Android 11 最新版本行为变更解读,就其中与应用兼容性相关的变更进行了详细梳理,形成了Android11应用兼容性适配指导,后续将陆续为开发者提供开发适配过程中的常见问题及解决方案,请开发者们关注,
本期重点:Android 11 中的前台服务类型
。
在Android 11,为了限制应用通过前台服务(Foreground Service)访问摄像头和麦克风数据,有如下变更:
● 新增foregroundServiceType类型:摄像头和麦克风
● 仅当应用在前台启动声明了对应类型的前台服务时,才能通过前台服务访问数据。
1.使用场景
从 Android 9 开始,应用就受到限制,只允许在前台访问摄像头和麦克风。Android 11上,当你请求摄像头、麦克风或地理位置权限时,系统权限弹框提供了三种选择“仅在使用该应用时允许”、“仅限这一次”、“拒绝”。
当选择了“仅在使用该应用时允许”后,应用可在当前交互状态访问对应权限保护的敏感数据,或者通过启动对应foregroundServiceType类型的前台服务来访问。否则,如果应用到了后台,将不再获得对应的数据。
2.应用如何适配
为了方便应用适配,该行为变更仅对target SDK为Android 11的应用生效。
应用必须要在 Manifest 中声明对应的foregroundServiceType:
● 在AndroidManifest中声明
![fa3a0eb31a63499b8d0ed7ebc0711bb2.png](https://i-blog.csdnimg.cn/blog_migrate/f68a0acbb0e81c0d71d0ee936b139668.png)
An
droid 11 开发者测试版适配指引
<service android:name="ExampleForegroundService" android:foregroundServiceType="microphone|camera|...">service>
并在实际用到的时候,可以通过 startForeground 再次声明需要用到的服务类型。
● 动态声明
// Optional (defaults to manifest entry)Service.startForeground(int id,Notification notification, int foregroundServiceType);// foregroundServiceTypeNotification must be a subset of types specified in the manifest entry
3.总结
Android 11上新增“摄像头”和“麦克风”的foregroundServiceType,target SDK为Android 11的应用必须适配该行为变更,否则即使使用前台服务,也无法在其中获取到对应权限保护的敏感数据。
4.详细参考资料
Android 11 中的前台服务类型:
https://developer.android.google.cn/preview/privacy/foreground-service-types
使用OPPO远程真机进行Android 11兼容测试
OPPO开放平台远程真机现已上线了搭载有Android 11 开发者预览版的测试机型——OPPO Find X2,欢迎开发者前来使用。
OPPO远程真机官网链接:
https://open.oppomobile.com/newservice/capability?pagename=cloudmachine![938e9bae43d812205244e7519b6f20ff.png](https://i-blog.csdnimg.cn/blog_migrate/cc2e6d35a3a147c061d95f7234fff25a.png)
![fa3a0eb31a63499b8d0ed7ebc0711bb2.png](https://i-blog.csdnimg.cn/blog_migrate/f68a0acbb0e81c0d71d0ee936b139668.png)
![fa3a0eb31a63499b8d0ed7ebc0711bb2.png](https://i-blog.csdnimg.cn/blog_migrate/f68a0acbb0e81c0d71d0ee936b139668.png)