从ACTION_IMAGE_CAPTURE意图获取图像的path
您好我正在使用ACTION_IMAGE_CAPTURE捕获图像使用Intent如下: 
 Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); cameraIntent.putExtra( MediaStore.EXTRA_OUTPUT, (new File(Environment.getExternalStorageDirectory(), String.valueOf(System.currentTimeMillis()) + ".jpg")) ); startActivityForResult(cameraIntent, 0); 
 我需要将图像存储在SD卡中,并使用onActivityResult方法检索该图像的path。 我不知道如何获取当前捕获的图像的图像path。 
如果有人知道请帮忙。
谢谢
这是如何工作在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来获取文件path: 
  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()中推导出图像/videoURI,如下所示
Android ACTION_IMAGE_CAPTURE意图
然而,由于这部分是适应制造商,您可能仍然会遇到“旧”的方法可能有用的电话。
另一种方法,在android 2.1上testing,取最后一张图片的ID或AbsolutePath。
可以这样做:
 /** * Gets the last image id from the media store * @return */ private int getLastImageId(){ final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA }; final String imageOrderBy = MediaStore.Images.Media._ID+" DESC"; Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns, null, null, imageOrderBy); if(imageCursor.moveToFirst()){ int id = imageCursor.getInt(imageCursor.getColumnIndex(MediaStore.Images.Media._ID)); String fullPath = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA)); Log.d(TAG, "getLastImageId::id " + id); Log.d(TAG, "getLastImageId::path " + fullPath); imageCursor.close(); return id; }else{ return 0; } } 
并删除文件:
 private void removeImage(int id) { ContentResolver cr = getContentResolver(); cr.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.Media._ID + "=?", new String[]{ Long.toString(id) } ); } 
此代码基于post: 拍摄相机意向照片后删除图库图像
 这个问题很古老,但是我一直在和同样的问题争吵半天。 问题是你的ACTION_IMAGE_CAPTURE意图将始终返回code=-1和data=null除非在AndroidManifest.xml文件中为应用程序设置了以下权限: 
 <uses-permission android:name="android.permission.CAMERA"/> 
如果要从应用程序录制audio,还可以设置以下内容:
 <uses-permission android:name="android.permission.RECORD_AUDIO"/> 
去掉
 intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 
并添加
 Uri uri = data.getData();in onActivityResult