Camera intent.getData()在某些设备中返回null,主要在android 7.0中

时间:2017-09-05 11:41:06

标签: android android-intent camera android-camera android-bitmap

Camera intent.getData()返回null,在某些设备中。

启动相机以获得结果

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAMERA_REQUEST);

我尝试使用代码获取图像的Uri路径,

public static Uri getImageUri(Context inContext, Bitmap inImage) {
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
        String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
        return Uri.parse(path);
    }

它会给我Uri的图像,但图像质量会变差。 任何帮助赞赏。

1 个答案:

答案 0 :(得分:1)

  

Camera intent.getData()返回null,在某些设备中。

应该为所有相机应用返回null

  

我尝试了以下代码获取图像Uri的路径

该代码没有"获得图像Uri的路径"。它会将Bitmap保存到随机的未记录文件中,然后从代表该内容的Uri返回MediaStore

它还会浪费堆空间,因为您创建了一个ByteArrayOutputStream,将JPEG写入其中,然后将其全部丢弃。

  

图像质量会变差

开始时图像质量很差,因为您要求相机应用程序为您提供缩略图。使用EXTRA_OUTPUT告诉相机应用程序保存全分辨率图像的位置,然后在onActivityResult()中使用该位置。 This sample app证明了这一点。