最近項目中遇到一個問題,Android手機拍照返回時,部分手機拍照返回時,在onActivityResult方法中使用data.getData()返回為空,解決方法為:
private Uri photoUri=null;
/**
* 調(diào)用系統(tǒng)相機拍照
* */
private void openFile() {
Intent openFileIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
openFileIntent
.putExtra(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
SimpleDateFormat timeStampFormat = new SimpleDateFormat(
"yyyy_MM_dd_HH_mm_ss");
String filename = timeStampFormat.format(new Date());
ContentValues values = new ContentValues();
values.put(Media.TITLE, filename);
photoUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
openFileIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(openFileIntent, Consts.Intents.INTENT_OPEN_FILE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK
&& requestCode == Consts.Intents.INTENT_OPEN_FILE) {
Uri result = null;
if (ValueUtils.isNotEmpty(data)) {
result = data.getData();
}else {
result = photoUri;
}
if (mUploadMessage != null) {
if (result != null) {
mUploadMessage.onReceiveValue(result);
} else {
// 防止監(jiān)聽一直掛起
mUploadMessage.onReceiveValue(null);
}
mUploadMessage = null;
}
}
}