前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 11 强制用户使用系统相机?

Android 11 强制用户使用系统相机?

作者头像
雪月清
发布2020-08-25 10:52:02
1.6K0
发布2020-08-25 10:52:02
举报
文章被收录于专栏:雪月清的随笔雪月清的随笔

最近在Android开发者官网中查看Android 11版本变更记录的时候,发现一个有意思的改动

此项变更是说在使用Intent创建拍照,录像隐式请求的时候,只有手机预装的系统相机才会响应。举个例子,当用户需要更新微信头像,选择拍摄上传的时候,如果用户手机上有多款能响应该Intent的相机应用可供选择的话,Android11之前是这个样子的:

如果开发者没有进行适配的话,Android11上就直接跳转到系统相机去了。对于很多使用美颜,滤镜和贴纸功能的用户影响还是挺大的。

又是一波适配工作来了呀......

通过隐式Intent启动Activity的时候,我们总是需要查询一下

分别在Android Q和Android R的模拟器上运行,我们发现Android R只会返回系统相机的info

Android Q:

Android R:

文档中提供了适配方案:

If you want a specific third-party camera app to handle your app's intent, you may do so by explicitly specifying the third-party camera app’s package name to fulfill the intent.

如果希望特定的第三方相机应用程序处理应用程序的意图,可以通过显式指定第三方相机应用程序的包名称来实现该意图。例如:

Android11 中要提供原来版本的交互体验,可能就需要自己实现选择UI了......

此项变更已经在Android11 beta版本中生效,不知道正式的版本是否有所变化,也不清楚Android CTS是否会测试这一项内容,或者允许OEM厂商将其更改为原来的规则(如果CTS要测试这一项的话,OEM厂商的海外机型肯定是不能改的)。但从现在的版本迭代中可以看到,官方基于对用户的隐私和安全的保护考虑,对于API的限制是越来越多了。

虽然此项变更在issue track区域,很多Android开发者提出了明确的质疑,不过趋势是不可更改的,从一些API的限制上我们可以明显的感受到这一点。

"……我们认为,对用户的隐私与安全的保护才是正确的权衡。" — 谷歌 Issue Tracker.

比如在Android M之前,很多Android App在需要使用相机拍摄用户头像等需求的时候,大部分开发者都会使用MediaStore.ACTION_IMAGE_CAPTURE来满足这一需求。这种方式开发简单,而且不需要向系统请求Camera权限,但是在M之后,只要在manifest文件中申请了Camera权限,仅仅使用action为ACTION_IMAGE_CAPTURE的intent时,也必须要先动态申请Camera权限,否则将会抛出异常

java.lang.SecurityException: Permission Denial

官方文档中也注明了这一点

所以在使用第三方lib的时候,还要关注它在 manifest 文件中添加的东西

~~END~~

推荐阅读

1. 曝光补偿很简单,为何很多人纠结怎么用?

2. 3A之自动白平衡(AWB)篇

觉得不错,点个在看呗~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雪月清的随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档