我設置了一個數據成員imageUri,並將其傳遞給啓動相機活動的意圖。在相機活動中,我會拍照並旋轉屏幕,然後單擊複選框返回到我的活動。當我這樣做時,調用onActivityResult時,imageUri爲null。如果我不旋轉屏幕,一切正常,imageUri不爲空。當屏幕方向改變時,導致uri變爲null的相機活動
onConfigurationChanged不是在我的活動中調用的geting,所以這不是問題。
public void takePhoto() {
//define the file-name to save photo taken by Camera activity
fileName = getFileNameDate();
//create parameters for Intent with filename
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION,"Image capture by camera");
imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
//create new Intent
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, picture_result_code);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i("Camera_onActivityResult", "Got activity result requestCode = " + requestCode + " resultCode: " + resultCode);
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case picture_result_code:
if (resultCode == Activity.RESULT_OK) {
try {
Log.i("Camera", "Preparing to upload image...");
picFile = convertImageUriToFile(imageUri); // Here imageUri is null and causing crash
uploadFile(picFile.getPath());
} catch (Exception e) {
Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT).show();
Log.e("Camera", e.toString());
e.printStackTrace();
}
}
}
}
有沒有其他的方式,我應該檢索圖像?
謝謝
看一看這樣的回答: http://stackoverflow.com/a/8248392/392781 – Bartek 2013-04-11 14:16:56