如何在不显示选择器的情况下打开默认相机?

4

如何在应用程序中打开默认相机?

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

一切都很好,但像Line Camera, Paper Camera这样的应用程序会出现在选择器中与默认相机应用程序一起显示,我不想显示选择器。

非常感谢您的关注。


请查看此链接,了解如何启动默认相机应用程序。希望对您有所帮助。 - Syed Raza Mehdi
3个回答

2
    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上进行了测试,One Plus 3。 - atish naik

0

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


0

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

如何使用意图启动Android相机

作者明确指出:

“上面的代码应该会在你的手机上启动默认的相机活动”。


这段代码没有过滤第三方应用程序,如果您的手机安装了像Line CameraPaper Camera这样的应用程序,它将打开选择器。 - Nauman Zubair

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接