reddit 的一篇帖子介绍了 Android 11 调用相机 API 的重大变化,根据这篇帖子引用的博客文章的介绍,Android 11 包含一些行为变更,这些变更可能会影响以 Android 11 或更高版本为目标平台的应用,其中一项变更包括:

从 Android 11 开始,只有预装的系统相机应用可以响应以下 intent 操作:

android.media.action.VIDEO_CAPTURE  
android.media.action.IMAGE_CAPTURE  
android.media.action.IMAGE_CAPTURE_SECURE 

如果有多个预装的系统相机应用可用,系统会显示一个对话框,供用户选择应用。如果您希望自己的应用使用特定的第三方相机应用来代表其捕获图片或视频,可以通过为 intent 设置软件包名称或组件来使这些 intent 变得明确。

可以看到,对于三个特定的需要调用摄像头的 intent(VIDEO_CAPTURE、IMAGE_CAPTURE 和 IMAGE_CAPTURE_SECURE),Android 11 现在将自动提供预装的系统相机应用以执行这些操作,而无需使用其他应用程序。虽然文档中提到了“变通”的方法,但这种方法并不是那么方便,因为它要求设置显式处理程序的包名称或组件,这意味着开发者必须预先选择首选应用程序。

而在之前的版本中,开发者如果要调用摄像头,只需按照几个条件创建一个请求,Android 就会提示用户从已安装的应用列表中进行选择。

Android 11 强制用户使用内置系统相机应用_第1张图片

▲ Android 10 的相机选择器
换句话说,这就是强迫用户使用预装的内置系统相机应用。用户在 IssueTracker 反馈了此问题,谷歌工程师回应称“保护用户的隐私和安全是正确的权衡”。

【编辑推荐】

  1. 谁更扁平化 iOS 8与Andorid L界面对比

【责任编辑:未丽燕 TEL:(010)68476606】