Получить путь изображения от ACTION_IMAGE_CAPTURE Intent

Привет, я использую 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 . Я не знаю, как получить путь к изображению текущего снимка.

Если кто-нибудь знает, пожалуйста, помогите.

благодаря

    Вот как это работает на 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

    Однако, поскольку эта часть зависит от адаптации производителя, вы все равно можете столкнуться с телефонами, где «старый» подход может быть полезен.

    Другой способ, протестированный на Android 2.1, – взять 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) } ); } 

    Этот код был основан на сообщении: Удаление изображения галереи после снятия снимка камеры

    Этот вопрос очень старый, но я боролся с той же проблемой полдня. Проблема заключается в том, что ваше намерение ACTION_IMAGE_CAPTURE всегда будет возвращать code=-1 и data=null если вы не установили следующие разрешения для приложения в вашем файле AndroidManifest.xml :

      

    Вы также можете установить следующее, если вы хотите записать звук из своего приложения:

      

    Удалить

     intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 

    и добавить

     Uri uri = data.getData();in onActivityResult 
    Interesting Posts

    Java EE6> Упаковка JSF facelets (xhtml) и ManagedBeans как JAR

    Код VBA не запускается, когда ячейка изменяется по формуле

    Как обрабатывать событие прокрутки windows в Angular 4?

    Как повернуть div с помощью jQuery

    Как найти все файлы, содержащие только нулевые байты (любое их число)

    Как создать пользовательский компонент в существующей палитре редактора веб-страниц

    Как просмотреть файл общих настроек с помощью Android Studio?

    MvcSiteMap генерирует меню без испорчения сухарей

    Если функция не возвращает значение с допустимым типом возвращаемого значения, нормально ли компилятору выкинуть мусор?

    Как сопоставить списки вложенных объектов с Dapper

    Как я могу направить * некоторый * трафик через прокси SSX SOCKS на OS X?

    Реализация C ++, которая обнаруживает неопределенное поведение?

    Как определить кодировку символов текстового файла?

    Ожидаемый секторный вопрос. Означает ли это, что HDD не работает?

    Как автоматически добавить подпись к определенным учетным записям электронной почты Outlook 2010

    Давайте будем гением компьютера.