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