Android默认摄像头捕获图像返回图像URI null

时间:2016-09-13 04:36:31

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

我打开默认的相机应用程序来捕获我的应用程序中的图像,但没有获取捕获的图像uri。以下是我的代码 -

开放式相机代码 -

    initTmpUris();
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageUri);
    intent.putExtra("return-data", true);

创建存储图像路径的代码 -

private void initTmpUris() {
    File proejctDirectory = new File(CameraUtil.FOLDER_PATH + File.separator + CameraUtil.FOLDER_NAME);
    if (!proejctDirectory.exists()) {
        proejctDirectory.mkdir();
    }
    File tempDirectory = new File(proejctDirectory, "temp");
    if (!tempDirectory.exists()) {
        tempDirectory.mkdir();
    } else {
        // delete all old files
        for (File file : tempDirectory.listFiles()) {
            if (file.getName().startsWith("tmp_")
                    || file.getName().startsWith("croped_")) {
            }
        }

    }
    capturedImageUri = Uri.fromFile(new File(tempDirectory, "tmp_"
            + String.valueOf(System.currentTimeMillis()) + ".jpg"));

    File extraOutputFile = new File(tempDirectory, "croped_"
            + String.valueOf(System.currentTimeMillis()) + ".jpg");

    extraOutputFile.setWritable(true);
    cropImageUri = Uri.fromFile(extraOutputFile);
}

和onActivityResult中的代码 -

 case REQ_CODE_PICK_FROM_CAMERA_WITHOUT_CROP: {

            if (resultCode == RESULT_OK) {
                if(null!=capturedImageUri) {
                    String imagePath = capturedImageUri.getPath();
                    File file = new File(imagePath);
                    onSingleImageSelected(reqCodeStarter, file, imagePath,
                            get_Picture_bitmap(file));
                }


            } else {
                onMediaPickCanceled(reqCodeStarter,
                        REQ_CODE_PICK_FROM_CAMERA_WITHOUT_CROP);
            }

        }
        break;

我在三星s7设备中获取captureImageUri,在其他设备中获取捕获图像的返回URL。

1 个答案:

答案 0 :(得分:2)

将此代码添加到activity文件中的Manifest标记。

 android:configChanges="orientation|keyboardHidden|screenSize"

它不会让您当前的活动陷入困境并重新创建,因此您将获得结果。