Android 11取消了摄像头拾取器,迫使人们只能使用内置摄像头

2020-08-19 09:03:51

Android可能一开始就有这样的口头禅,即只要开发者能编写代码,他们就可以做任何事情,但随着安全和隐私成为更高的优先事项,情况随着时间的推移发生了变化。过去十年的每一次重大更新都以保护用户的名义关闭了功能或增加了限制,但一些牺牲可能并不是完全必要的。另一个Android 11取舍出现了,这一次剥夺了用户选择第三方相机应用来代表其他应用拍照或视频的能力,迫使用户只能依赖内置的相机应用。

这一变化的核心是Android的一个决定性特征:意图系统。比方说,你需要为一个新奇的咖啡杯拍一张照片,然后通过拍卖应用程序出售。由于这款拍卖应用程序不是为拍照而设计的,所以开发人员选择把这件事留给一个合适的相机应用程序来完成。这就是意图系统发挥作用的地方。开发人员只需创建一个带有几个标准的请求,Android就会提示用户从已安装的应用程序列表中进行选择。

然而,Android 11对于要求照片或视频的应用程序来说,情况将会发生变化。三个特定的意图将停止工作,包括:VIDEO_CAPTURE、IMAGE_CAPTURE和IMAGE_CAPTURE_SECURE。Android 11现在将自动提供预装的相机应用程序来执行这些动作,而不需要搜索其他应用程序来填补这个角色。

#34;……。我们相信这是保护我们用户隐私和安全的正确权衡。&谷歌问题跟踪器(Google Issue Tracker)。

谷歌在Android 11的新行为列表中描述了这一变化,并在问题跟踪器中进一步证实了这一点。隐私和安全被认为是原因,但并没有讨论到底是什么让这些意图变得危险。也许一些用户被骗,将一个恶意的相机应用程序设置为默认设置,然后使用它来捕捉本应保持隐私的东西。

Android 11不仅在请求时自动启动预装的相机应用程序,还阻止应用程序开发人员方便地提供自己的界面来模拟相同的功能。我用一些简单的代码运行了一个测试,在手机上查询相机应用程序,然后在运行Android 10和11的设备上运行,并安装了相同的相机应用程序集。安卓10退还了一整套应用,但安卓11什么也没有上报,甚至连谷歌自己预装的相机应用也没有上报。

正如CommonsWare的马克·墨菲(Mark Murphy)指出的那样,谷歌确实为开发人员开出了一种变通办法,尽管它不是很有用。文档建议明确检查安装的相机应用程序的软件包名称-这意味着开发人员必须预先选择首选的应用程序-并将用户直接发送到这些应用程序。当然,还有其他方法可以在不识别所有软件包名称的情况下获取选项,比如获取所有应用程序的列表,然后手动搜索意图过滤器,但这似乎过于复杂。

这一新行为至少在当前的Android 11测试版中是强制执行的,而且它将发生在任何应用程序上,无论它们的目标是API30还是更低的版本。我们还不知道Android CTS(兼容性测试套件)是否会要求这一行为,或者是否会允许所有OEM将其改回之前的规则,但这很可能会成为未来的标准。

这当然不是一个毁灭性的变化,对于许多已经默认使用内置摄像头的用户来说,它将是完全透明的。而且大多数应用程序仍然允许用户切换到他们喜欢的相机来抓拍一张好照片,然后从图片库上传。然而,这对用户来说意味着更多的工作,对于那些经常用滤镜拍摄个人资料照片的人或者那些依赖G Cam端口来更换库存相机的人来说,这是一种刺激。此外,一些应用程序不支持不同的工作流程,这意味着无论有什么相机应用程序,你都会被困在那里。