gpt4 book ai didi

android - 检查相机是否可以在 Android 中使用,而不是在 Intent 上使用 resolveActivity

转载 作者:行者123 更新时间:2023-11-29 19:57:49 26 4
gpt4 key购买 nike

我在网上看到了一些不同的东西,所以我想确保我做的是正确的:

检查手机是否有摄像头:

PackageManager pm = context.getPackageManager();

if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
//proceed
}

但我也从http://developer.android.com/training/camera/photobasics.html看到

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
PackageManager pm = context.getPackageManager();

if (takePictureIntent.resolveActivity(pm) != null) {
//proceed
}

我知道第一个对于验证相机是否存在是“正确的”,但第二个到底在做什么?在继续之前实际检查这两个条件是个好主意,还是只检查一个或另一个就足够了?

根据 http://developer.android.com/reference/android/content/pm/PackageManager.html#resolveActivity%28android.content.Intent,%20int%29它说 resolveActivity“确定针对给定 Intent 执行的最佳操作”,但我真的不知道这意味着什么。这是“检查相机”的另一种方式吗?

最佳答案

but what is the second one doing exactly?

它正在确定设备上是否安装了提供可启动的 ACTION_IMAGE_CAPTURE Activity 的应用程序。可能没有这样的应用程序,或者可能有应用程序但当前用户可能没有权限。

Is it a good idea to actually check for both conditions before proceeding, or does it suffice to just check one or the other?

使用 resolveActivity()/queryIntentActivities() 提前检测是否有应用程序用于您要执行的隐式 Intent调用或捕获 ActivityNotFoundException,如果您调用 startActivity()/startActivityForResult() 并且没有匹配的 Activity ,则会引发该异常。对于任何隐式 Intent 都是如此。

从技术上讲,检查是否有硬件摄像头更多地是由使用摄像头 API 的应用程序负责。但是,您可以自己检查一下,特别是如果您想要在用户无法拍照时禁用 UI 选项(例如,操作栏项目)。在这种情况下,仅在以下情况下启用 UI 选项:

  • 有一个摄像头,
  • 有一个ACTION_IMAGE_CAPTURE Activity

关于android - 检查相机是否可以在 Android 中使用,而不是在 Intent 上使用 resolveActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36555496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com