Android 想要拍照,如果我按back,应用程序就会崩溃

Android 想要拍照,如果我按back,应用程序就会崩溃,android,android-intent,camera,uri,image,Android,Android Intent,Camera,Uri,Image,我把这个函数称为: private void TakePhoto() { LogService.log(TAG, "inTakePicture"); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/BlueSkyBio/media/",

我把这个函数称为:

  private void TakePhoto() {
    LogService.log(TAG, "inTakePicture");
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/BlueSkyBio/media/", "test.jpg");

    outputFileUri = Uri.fromFile(file);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
    startActivityForResult(intent, TAKE_PICTURE);

}
这让我进入下一个onActivityResult:

 public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == TAKE_PICTURE) {
        if(outputFileUri != null){
            LogService.log("MainFragment", outputFileUri.toString());
            String path = outputFileUri.toString();
            selectedVideoPath = path.substring(7);
            LogService.log("in take pic", "selectedImagePath: " + selectedVideoPath);
            Intent paintActivity = new Intent(getActivity(), PaintActivity.class);
            paintActivity.putExtra("selectedImagePath", selectedVideoPath);
            paintActivity.putExtra("isVideo", false);
            startActivity(paintActivity);
            ((FragmentActivity) getActivity()).finish();
        } else{
            //                Toast.makeText(getActivity(), "No picture taken", Toast.LENGTH_SHORT).show();
            Intent main = new Intent(getActivity(), FragmentActivity.class);
            startActivity(main);
            ((FragmentActivity) getActivity()).finish();
        }


    }

}
这工作正常,但如果我调用拍摄意图,然后按下后退按钮,如果我之前已经拍摄了照片,它将加载该照片,如果没有,它将崩溃,因为按下后退,它将不会拍摄照片。我能做些什么来避免这种情况

我已尝试测试:

  if(data != null) // instead of:  if(outputFileUri != null){
但这永远不会进入代码的“else”部分。

使用以下条件:

private static final int CAMERA_PIC_REQUEST = 1337;  

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode==CAMERA_PIC_REQUEST && resultCode == RESULT_OK){

         log.d("something","something");          
    }
    else if (resultCode == Activity.RESULT_CANCELED) 
    {
        log.d("something","something");
    }

}

10倍多,从现在起,我肯定也会使用resultCode,现在看到它是多么简单,我觉得自己很愚蠢:p