如何在不显示选择器的情况下打开默认摄像头?

时间:2013-09-27 12:30:08

标签: android android-camera-intent

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

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

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

您的关注将受到高度赞赏。

3 个答案:

答案 0 :(得分: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 Camera Paper Camera 进行了测试,这两个应用程序都显示了选择器但是通过过滤包上面的代码只打开默认相机。

答案 1 :(得分:0)

您可以通过使用显式意图来选择特定活动。对于内置相机应用程序,包名称可能不同,并且取决于设备

答案 2 :(得分:0)

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

How to launch android camera using intents

作者明确指出: “上面的代码应该会启动默认手机上的相机活动”