Java Android果冻豆摄像头返回空URI

Java Android果冻豆摄像头返回空URI,java,android,android-camera,uri,Java,Android,Android Camera,Uri,我正在尝试使用相机在我的应用程序中拍照,然后裁剪拍摄的图像 Android的最新版本一切正常,但Android Kitkat 4.4.2则不然 相机返回一个空URI 获取ActivityReslult上的URI: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_CODE &&am

我正在尝试使用相机在我的应用程序中拍照,然后裁剪拍摄的图像

Android的最新版本一切正常,但Android Kitkat 4.4.2则不然

相机返回一个空URI

获取ActivityReslult上的URI:

  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAMERA_CODE && resultCode == RESULT_OK) {
            Bundle extras = data.getExtras();
            Bitmap imageBitmap = (Bitmap) extras.get("data");

            picUri = data.getData();
            Intent i = new Intent(PublierActivity.this, CropActivity.class);
            i.putExtra("Uri", picUri);
            startActivityForResult(i, CROP_CODE);

        }
以下是我如何称呼摄像机的意图:

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

有没有办法为android的最旧版本破例来解决这个问题

从您的代码中,似乎您正在尝试使用
操作\图像\捕获
。在这种情况下,永远不应该有
Uri
-
数据。getData()
应该始终返回
null
。如果相机应用程序恰好返回一个
Uri
,这可能就是图像,但由于
操作\u image\u CAPTURE
未记录为返回
Uri
,因此您无法知道该
Uri
的用途

如果您在
动作图像捕获
意图
上使用
额外输出
,您知道图像应该存储在哪里,因为您告诉了摄像头应用程序将图像存储在哪里。请注意,一些相机应用程序有缺陷,无法执行
额外的\u输出
,将图像放在他们想要的任何地方

如果未使用
EXTRA\u输出
,则会在
的“数据”
EXTRA中返回缩略图

此外,请记住,这与Android操作系统版本无关,而与用户选择使用的摄像头应用程序有关。Android设备有数千种型号。这些相机附带了几十个(如果不是几百个的话)不同的相机应用程序。用户还可以选择安装第三方相机应用程序。任何一个都可以处理你的请求