在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设备(主要是android 4及以上版本)是否支持上述2种方法?
我需要确保所有设备都支持上述方法。
谢谢。
特定设备存在一些问题,尤其是三星,小米。但他们正在变得更好。一般情况下,它应该可以在每个设备上使用,但现实才能实现。
例。
Camera intent not working with Samsung Galaxy S3
Selecting image from gallery not working on Redmi Note 4
Camera intent for ACTION_IMAGE_CAPTURE does not appear on Samsung Galaxy Nexus(4.0.2)
是的,这是Android操作系统的基本功能,所以它是在所有Android设备中构建的。
但是在android版本的marshmallow之后你必须要求相应的许可。
是的,这些意图是标准Android的一部分。确实,在一些非常罕见的情况下,设备制造商搞砸了这一点,但最糟糕的情况是最终用户安装第三方相机应用程序或可以使用Gallery的应用程序。在这种情况下,系统允许最终用户选择满足意图的应用程序之一。其中一些第三方应用程序不完全符合协议,或具有意外的副作用。
这就是为什么最佳做法是在应用程序中实现自定义相机,为所有希望您经常使用相机的应用程序。