【问题标题】:How to open default camera without showing chooser?如何在不显示选择器的情况下打开默认相机?
【发布时间】:2013-09-27 12:30:08
【问题描述】:

如何在您的应用程序中打开默认摄像头?

我不想为它打开选择器(它的客户要求)。我正在使用这个意图android.media.action.IMAGE_CAPTURE 并调用活动以获得结果。

一切都很好,但是像 Line Camera、Paper Camera 这样的应用出现在带有默认相机应用的选择器中,我不想显示选择器。

我们将非常感谢您的关注。

【问题讨论】:

标签: android android-camera-intent


【解决方案1】:
    List<ApplicationInfo> list = packageManager.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
    for (int n=0;n<list.size();n++) {
        if((list.get(n).flags & ApplicationInfo.FLAG_SYSTEM)==1)
        {
            Log.d("TAG", "Installed Applications  : " + list.get(n).loadLabel(packageManager).toString());
            Log.d("TAG", "package name  : " + list.get(n).packageName);
            if(list.get(n).loadLabel(packageManager).toString().equalsIgnoreCase("Camera")) {
                defaultCameraPackage = list.get(n).packageName;
                break;
            }
        }
    }

我发现以下解决方案及其完美运行。

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.setPackage(defaultCameraPackage); 
startActivityForResult(takePictureIntent, actionCode);

您可以通过在上述意图中设置包来过滤默认相机。我通过安装两个应用程序 Line CameraPaper Camera 对其进行了测试,这两个应用程序都显示了选择器,但通过过滤打包上面的代码只打开默认摄像头。

【讨论】:

  • 似乎像一个魅力。在 android oreo 上测试过,一加 3
【解决方案2】:

您可以选择特定活动的唯一简单方法是使用显式意图。对于内置相机应用,包名称可能不同且取决于设备

【讨论】:

    【解决方案3】:

    相信您可以在下面的链接中找到您的答案(和代码):

    How to launch android camera using intents

    作者在那里特别指出: "上面的代码应该在你的手机上启动默认相机活动"

    【讨论】:

    • 此代码不会过滤第三方应用程序,如果您的手机中安装了 Line CameraPaper Camera 等应用程序,它将打开选择器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 2021-11-28
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多