相机意图不适用于多个相机应用程序

Camera Intent not working with multiple camera apps

在我的应用程序中,我 运行 相机意图用照片应用程序拍照,代码如下:

Activity activity;
File currentPhotoFile;
Intent capturePhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri uri = GenericFileProvider.getUriForFile(activity, activity.getPackageName() + providerSufixName, currentPhotoFile);
capturePhoto.putExtra(MediaStore.EXTRA_OUTPUT, uri);
activity.startActivityForResult(capturePhoto, REQUEST_PHOTO);

之后,我在 Activity

activity.onActivityResult 函数中捕获了创建的照片

如果我只有一个就好了!我的移动设备上的照片应用程序 - 一切正常。

但是!如果我在我的设备上再安装一个!照片应用程序 - 上面的代码不起作用:(

如果有两个照片应用程序,当我调用 activity.startActivityForResult - 我会看到带有所有可用照片应用程序列表的 android 系统对话框。 (比如 Intent.createChooser 调用)。我从中 select,首选照片应用,然后点击 "JUST ONCE"。选择应用程序 运行s,我在里面拍照,然后按确定按钮返回我的应用程序。 此时我收到了我的 onActivityResult 的回调,我的代码是:REQUEST_PHOTOrequestCode = RESULT_CANCELED。这就是全部:(

为什么它不起作用? 我如何解决这个问题并在多个照片应用程序中使用相机意图?

问题是在清单中我有选项: android:launchMode="singleInstance" 我的 activity.

<activity
            android:name="MyActivity"
            android:launchMode="singleInstance"
>

要解决上述问题,您应该从清单文件中删除 singleInstance 选项(或将其替换为 singleTask 选项)。 这已解决问题,onActivityResult 正常工作。