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
,因为设备所有者不允许这样做。
您可以使用PackageManager
和resolveActivity()
查看设备是否支持当前用户的特定Intent
startActivityForResult()
。或者,您可以捕获将被提升的ActivityNotFoundException
。
除此之外,大多数用户的大多数设备应该支持ACTION_PICK
Intent
(或者更好的是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