当有两个或多个活动要处理意图时,活动结果代码始终为0(取消)

时间:2019-04-03 09:01:54

标签: android android-intent android-activity

我有一个问题,当我用startActivityForResult拍照时,如果有两个或多个可以处理该意图的相机应用程序出现,则resultCode始终是Activity.RESULT_CANCELED(0)。但是,如果我将其中之一设置为默认应用程序,而下次它不向我提供选择器,则一切正常,它将拍照并在启动startActivityForResult()的片段的onActivityResult中检测到它。 当我尝试打开图库以选择图片时,也会发生同样的事情。如果有两个图库应用程序,则选择其中一个,图片选择结果始终为0。 这是我用来启动相机应用程序的代码:

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
 if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
      startActivityForResult(takePictureIntent, AppConstants.TAKE_PICURE_CAMERA_REQUEST_CODE);
  }

2 个答案:

答案 0 :(得分:1)

当我的活动有launchMode="singleTask"时,我遇到了同样的问题,但是我更改为singleTop并解决了问题

答案 1 :(得分:0)

我刚刚将我的 Poco X3 更新到了 Android 11,现在我遇到了同样的问题......这可能是 MIUI (12.0.8) 中的一个错误。它在其他 Android 11 设备上运行良好。

更改启动模式不起作用。但是,当我检测到 MIUI 用户时,我会绕过选择器并打开它找到的第一个相机应用。

最糟糕的是,您无法真正检测到此问题何时发生。因此,您无法在出现问题时进行登录,因此您无法找出遇到此问题的用户。

当您尝试从图库中获取照片或尝试在照片应用中打开照片时,也会出现同样的问题。后者导致“找不到照片”消息。