我正在尝试通过调用
来显示相机拍摄的已保存照片的路径`data.getdata`
在Toast中,但App崩溃了。我也试过data.getDataString
,但没解决
任何事情。
代码:
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "My Images");
imagesFolder.mkdirs();
File image = new File(imagesFolder, "img01");
Uri uriSavedImage = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
startActivityForResult(imageIntent,CAMERA_REQUEST_CODE);
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if ((requestCode == CAMERA_REQUEST_CODE) && (resultCode == RESULT_OK)) {
Toast.makeText(getApplicationContext(), "Image Saved To: "+data.getData(), Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:1)
从您的意图中获取额外的数据包,可以访问结果数据。
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
不要忘记空检查,因为我的印象是“数据”标签在所有手机上无效。
编辑:使代码更精确,即在此提供准确的解决方案。
答案 1 :(得分:1)
答案 2 :(得分:0)
也可以使用data.getData().toString()
data.getData().toString()
应该有效。但是,它实际上不会为您提供存储图像的实际路径。它宁愿给你一张URI
的图片。你需要使用。来解析那个uri。
public String getRealPathFromURI(String uriString) {
try {
String[] proj = { MediaStore.Image.Media.DATA};
Log.d("First", proj[0]);
Cursor cursor = managedQuery(Uri.parse(uriString), proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Image.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "Alas!";
}