相机意图不适用于多个相机应用程序
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_PHOTO
但 requestCode = RESULT_CANCELED
。这就是全部:(
为什么它不起作用?
我如何解决这个问题并在多个照片应用程序中使用相机意图?
问题是在清单中我有选项:
android:launchMode="singleInstance"
我的 activity.
<activity
android:name="MyActivity"
android:launchMode="singleInstance"
>
要解决上述问题,您应该从清单文件中删除 singleInstance
选项(或将其替换为 singleTask
选项)。
这已解决问题,onActivityResult
正常工作。
在我的应用程序中,我 运行 相机意图用照片应用程序拍照,代码如下:
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_PHOTO
但 requestCode = RESULT_CANCELED
。这就是全部:(
为什么它不起作用? 我如何解决这个问题并在多个照片应用程序中使用相机意图?
问题是在清单中我有选项:
android:launchMode="singleInstance"
我的 activity.
<activity
android:name="MyActivity"
android:launchMode="singleInstance"
>
要解决上述问题,您应该从清单文件中删除 singleInstance
选项(或将其替换为 singleTask
选项)。
这已解决问题,onActivityResult
正常工作。