Android MediaStore.ACTION_IMAGE_CAPTURE 和 Intent.ACTION_PICK

标签 android android-intent android-camera android-gallery

我想知道以下 android intents 是否在所有设备上都可用,或者它们是否仅在某些设备上可用,如 com.android.camera.action.crop 是?

从图库中选择图像的 Intent :

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

从内置相机拍照的 Intent :

Intent(MediaStore.ACTION_IMAGE_CAPTURE);

最佳答案

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

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

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

关于Android MediaStore.ACTION_IMAGE_CAPTURE 和 Intent.ACTION_PICK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22545997/

相关文章:

android - 在 Webview 中单击文本启动 Activity Intent

java - 如何在 camera2 API 中触发手动自动对焦?

Android setFocusArea 和自动对焦

c# - SkiaSharp 镜像位图

android - 在 android 2.1 中将一个 Activity 添加到另一个 Activity 中

android - 是否可以从测试应用程序中同时从相机 Intent 中选择图像或视频?

android - 如何在 android 中使用自定义相机类编写 Exif 数据?

Android CallLog.Calls provider查询问题

android - 硬浮点调用 GCC 中的某些函数

java - 如何对已在 onCreate() 方法中创建的 View 使用 dagger 依赖注入(inject)