Так работает на 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, но вы скорее выводите URI изображения / видео из data.getData (), полученного из onActivityResult (..., данные Intent), как хорошо описано в
Android ACTION_IMAGE_CAPTURE Intent
Однако, поскольку эта часть подлежит адаптации изготовителем, вы все равно можете столкнуться с телефонами, в которых может быть полезен «старый» подход.