Android MediaStore.ACTION_IMAGE_CAPTURE 和 Intent.ACTION_PICK

Posted

技术标签:

【中文标题】Android MediaStore.ACTION_IMAGE_CAPTURE 和 Intent.ACTION_PICK【英文标题】:Android MediaStore.ACTION_IMAGE_CAPTURE and Intent.ACTION_PICK 【发布时间】:2014-04-28 01:36:33 【问题描述】:

我很想知道以下 android Intent 是否在每台设备上都可用,或者它们是否像 com.android.camera.action.crop 那样仅在某些设备上可用?

从图库中挑选图片的意图:

Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

使用内置相机拍照的意图:

Intent(MediaStore.ACTION_IMAGE_CAPTURE);

【问题讨论】:

【参考方案1】:

无法保证任何 Android 设备都支持任何特定用户的任何特定 Intent 结构。例如,对于 Android 4.3+ 平板电脑上的受限配置文件,即使具有相机应用的设备也可能不支持特定配置文件的 ACTION_IMAGE_CAPTURE,因为设备所有者不允许这样做。

您可以使用PackageManagerresolveActivity() 查看设备是否支持当前用户的特定Intent startActivityForResult()。或者,您可以捕获将被提升的ActivityNotFoundException

除此之外,大多数用户的大多数设备应该支持ACTION_PICKIntent(或者更好的是ACTION_GET_CONTENT)。支持ACTION_IMAGE_CAPTURE 的设备会少一些,因为并非所有设备都有摄像头。

【讨论】:

出于我的目的,我假设所有者没有任何限制,并且该设备具有摄像头。为了 TouchWizard、HTC Sense 等,我提出了疑问。那么,我应该重新表述:这些意图是否可以在具有 TW、HTC Sence 等的设备上使用? @Sinisa:他们应该这样做。除此之外,您还必须询问 HTC。 好的,谢谢,我刚刚阅读了很多关于那些自定义 UI 行为不端的内容 :) @Sinisa:我说它们存在。我并没有说他们一定会表现得很好。 :-) 不幸的是,设备制造商倾向于忽略其中一些Intents,并且没有对它们进行彻底的测试。尤其是ACTION_IMAGE_CAPTURE,已经够糟糕了,以至于我一直在编写 CWAC-Camera 库,以便更容易直接使用相机。 我刚刚在 Xperia 设备上测试了我的应用程序,在 ACTION_IMAGE_CAPTURE 方面的结果很糟糕。我将研究 CWAC-Camera,因为我放弃了“内置”意图,并将所有内容都包含在代码中。感谢您的关注:)

以上是关于Android MediaStore.ACTION_IMAGE_CAPTURE 和 Intent.ACTION_PICK的主要内容,如果未能解决你的问题,请参考以下文章

android android.provider.MediaStore.ACTION_VIDEO_CAPTURE 返回null onActivityResult 与nexus 7

Android MediaStore.ACTION_IMAGE_CAPTURE 和 Intent.ACTION_PICK

需要 MediaStore.ACTION_VIDEO_CAPTURE 创建 MP4 视频

Android Camera详解

android studio怎么调用相机

用于捕获图像和视频的 Android 意图?