最近在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~~

技术交流,欢迎加我微信:ezglumes ,拉你入技术交流群。

推荐阅读:

音视频面试基础题

OpenGL ES 学习资源分享

一文读懂 YUV 的采样与格式

OpenGL 之 GPUImage 源码分析

推荐几个堪称教科书级别的 Android 音视频入门项目

觉得不错,点个在看呗~

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

  1. Android 11适配指南之系统相机拍照、打开相册,安卓app开发教程

    Android 6 权限适配 Android 7 文件适配 Android 10/11 存储适配 ok,接下来以一个更换头像的小例子来讲解一下. 示例 ======================== ...

  2. Android监听用户打开系统相机进行录像行为

    首先,新建一个广播: public class CameraReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Con ...

  3. 安卓用户又少了一项自由,Android 11不再支持更改默认相机程序

    萧萧 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在微博.微信上想要拍照上传时,想直接用FaceU或美图秀秀作为默认拍照程序,给自拍加个滤镜? 在即将推出的Android 11里,这些第三方 ...

  4. Android11还能自定义相机吗,安卓用户又少了一项自由,Android 11不再支持更改默认相机程序...

    原标题:安卓用户又少了一项自由,Android 11不再支持更改默认相机程序 来源:量子位 关注前沿科技 萧萧 发自 凹非寺 量子位 报道 | 公众号 QbitAI 萧萧 发自 凹非寺 量子位 报道 ...

  5. www,android18x.com,Android 11 LineageOS 18.1系统

    Android 11 LineageOS 18.1系统已经正式开始发布了,重要带来了安卓系统的内核系统,这款系统包含了很多安全性的功能更新,带来了全新的安卓新功能展示,最新的版本都在这里,你会看到很多 ...

  6. Android 11 强制分区存储

    TargetSdk 30 的存储记录 前言 一.分区存储是什么? 二.应用分区存储的文件访问规定 1.应用专属目录 2.其他应用的专属目录 3.媒体资源文件 4.文件和目录访问限制 4.1.访问目录 ...

  7. Android 11.0 12.0系统默认授予读写权限给第三方app

    1.概述 在6.0以前读写权限是默认授予的,app不需要申请权限 在10.0之前需要android.permission.WRITE_EXTERNAL_STORAGE和android.permissi ...

  8. Android 11.0 12.0系统默认开启wifi

    1.概述 在11.0 12.0的系统中产品开发中,系统的wifi功能是默认关闭的,由于项目需要要求默认打开wifi,开机后直接连wifi就可以了 所以需要找到系统默认的关闭wifi的地方 打开wifi ...

  9. android中webview使用打开系统相机录像_有没有什么高效使用微信的经验?

    看了下前面的几个高赞的回答,通过个人习惯达到高效的目的的比较多.关注师兄的都知道,别人都走的路咱不走,就喜欢整点不一样的,因为刺激~ 从 Android 系统上,微信其实还有很多潜力可以挖掘,今天就跟 ...

最新文章

  1. 图书馆自动化系统 Evergreen 3.3 发布,迁移到 Angular
  2. 『Numpy』np.ravel()和np.flatten()
  3. line和spline_探索适用于Apache Spark的Spline Data Tracker和可视化工具(第1部分)
  4. C++的迭代器Interator
  5. jsf集成spring_Spring JSF集成
  6. cpu利用率低linux,linux计算,cpu 利用率超低,如何处理?
  7. html______1
  8. sql语句截取字符串
  9. DedeCms进行SEO优化全攻略
  10. cfree5更新C++11特性
  11. echarts设置tooltips样式以及调取数据
  12. js去除数组中的空值,假值
  13. chrome证书错误问题
  14. Firefox 浏览器更新以后出现书签丢失
  15. CUDA中的数学函数
  16. CSP-S 2022游记
  17. java转换docx为doc文件_java使用poi转换doc/docx为pdf
  18. CentOS7 搭建Janus服务
  19. 基于linux的在线英汉词典(带源码)
  20. 为什么选用Gurobi

热门文章

  1. windows cmd 自定义关机,重启,休眠
  2. 2020 最新 Linux批量创建50个用户stu001,stu002,...,stu050
  3. 用RSA进行加解密和数字签名
  4. 2021年电工(高级)复审考试及电工(高级)模拟考试
  5. 固态继电器基础知识和工作原理
  6. python三维数组可视化_【学习笔记】Python科学计算三维可视化(黄天羽、嵩天)(学习中。。)...
  7. 计算机在食品安全的应用,浅谈计算机在农产品食品安全中应用.doc
  8. linux-无法进入单用户-关于tty0和ttyS0
  9. 如何画好一张架构图?
  10. 飞瞳引擎集装箱人工智能开发平台开发文档