0
我調用這個函數:意圖進行拍照,如果我按回,應用程序崩潰
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){
但是,這絕不會輸入代碼的「其他」的一部分。
10倍了很多,從現在開始,我一定會用發送resultCode爲好,現在我看到的是多麼容易後覺得愚蠢:P – 2013-02-08 13:22:48