这就是它在 2.2 上的工作方式(与以前的版本不同)。开始意图时
String fileName = "temp.jpg";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
mCapturedImageURI = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
startActivityForResult(intent, CAPTURE_PICTURE_INTENT);
你需要记住mCapturedImageURI
。
当您捕获图像时,onActivityResult()
使用该 URI 来获取文件路径:
String[] projection = { MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery(mCapturedImageURI, projection, null, null, null);
int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String capturedImageFilePath = cursor.getString(column_index_data);
更新:在新的 Android 设备上,您不需要 MediaStore.EXTRA_OUTPUT,而是从从 onActivityResult(..., Intent data) 收到的 data.getData() 中推断图像/视频 URI,如下所述
Android ACTION_IMAGE_CAPTURE 意图
但是,由于这部分取决于制造商的调整,您可能仍然会遇到“旧”方法可能有用的手机。