0

我打开默认相机应用程序捕获图像在我的应用程序,但没有获取捕获的图像uri。下面是我的代码 -Android默认相机捕获图像返回图像URI null

代码开放式摄像机 -

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设备中捕获图像Uri,在其他设备中捕获图像的返回URL。

+1

检查它是否具有运行时权限,如果os的使用是棉花糖 – siddhesh

回答

2

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

android:configChanges="orientation|keyboardHidden|screenSize" 

它不会让你目前的活动破坏和重新创建,所以你会得到结果。

+1

谢谢它为我工作:) +1为答案 – Ravi