android 的默认图库和相机 Intent 是否适用于所有设备?

Is android's default gallery and camera intents available in all devices?

在 android 中有两种众所周知的方法可以使用 android 的默认意图获取图像。

图库意图

要从图库中挑选图片,我们通常这样做:

    Intent intent =new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(intent, 1);

相机意图

要打开相机并拍摄图像,我们通常这样做:

    Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(intent, 2);

最后我们在 onActivityResult 回调中得到了结果。

问题

我注意到一些聊天应用程序(知名的)使用自定义图库选择器和自定义相机捕获方法。

他们不使用 android 的默认方法,这似乎是更简单的方法。

所以我的问题是,是否所有android设备(主要是android4及以上)都支持以上2种方法?

我需要确保所有设备都支持上述方法。

谢谢。

是的,这是 android OS 的基本功能,所以它内置于所有 Android 设备中。

但在 android 版本棉花糖之后,您必须获得相应的许可。

特定设备存在一些问题,尤其是三星、小米。但他们正在变得更好。 通常它应该在每台设备上都可用,但现实开始了。

示例。

Camera intent not working with Samsung Galaxy S3

Camera intent for ACTION_IMAGE_CAPTURE does not appear on Samsung Galaxy Nexus(4.0.2)

是的,这些意图是标准 Android 的一部分。的确,在极少数情况下,设备制造商搞砸了,但更糟糕的情况是当最终用户安装第 3 方相机应用程序或可以与 Gallery 一起使用的应用程序时。在这种情况下,系统允许最终用户选择实现意图的应用程序之一。其中一些第 3 方应用程序不完全符合协议,或者有意想不到的副作用。

这就是为什么最好的做法是为所有希望您经常使用相机的应用实现自定义相机 in-app。