Android 5.0 是否更改了 ACTION_IMAGE_CAPTURE 意图的结果?

Did Android 5.0 change the result of ACTION_IMAGE_CAPTURE intent?

Intent captureImageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(captureImageIntent, TAKE_FIRST_IMAGE_REQUEST_CODE);

在onActivityResult(int requestCode, int resultCode, Intent data)

String mediaKey = "data";
case TAKE_FIRST_IMAGE_REQUEST_CODE:
   mImageUri1 = data.getData();

   if (mImageUri1 != null) {
       mImageBitmap1 =  (Bitmap) data.getExtras().get(mediaKey);
                    postCaptureImg1();
   } else {
       LOGD(TAG, "mImageUri1 == null");
   }
break;

代码在 Android 版本 < 5.0 上运行良好。但是,在 5.0 上,它不再起作用,mImageUri1 始终为 null。

Android 5.0 中有什么变化导致了这个问题吗?

The code works fine on Android version < 5.0

不,不是。它 发生 在你的有限测试中工作,因为你使用的特定相机应用程序 发生 到 return Uri (大概,您通过 EXTRA_OUTPUT 提供的值)。但是,the documentation for ACTION_IMAGE_CAPTURE 中没有任何内容需要相机应用 return 和 Uri。有成百上千个相机应用程序,既有预装的,也有从 public 渠道(如 Play 商店)安装的。不要指望在 onActivityResult().

中获得 Uri

Anything changed in Android 5.0 that causes this?

也许您正在使用的相机应用已更改为不再在结果中打包 Uri。根据记录的协议,这是完全合法的。