Проблема с сохранением изображения в каталоге sd

#android #android-camera

#Android #android-камера

Вопрос:

Я использую следующий код, чтобы сделать снимок с помощью встроенной камеры:

 private File mImageFile;
private String mTempImagePath;
public static Uri imageUri;
public void imageFromCamera() {
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
        Log.d("fototemp", "No SDCARD");
    } else {
        mImageFile = new File(Environment.getExternalStorageDirectory() File.separator "testFolder", "Pic" System.currentTimeMillis() ".jpg");
        imageUri = Uri.fromFile(mImageFile);

        DataClass dc = (DataClass) getApplicationContext();
        File tempFile = new File(Environment.getExternalStorageDirectory() File.separator "testFolder");
        Uri tempUri = Uri.fromFile(tempFile);
        dc.setString(DataClass.IMAGE_PATH, tempUri.toString());
        Log.d("fototemp", "ImagePath: "   tempUri.toString());


        mTempImagePath = mImageFile.getAbsolutePath();
        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mImageFile));
        startActivityForResult(intent, 0);
    }
}
  

Путь к изображению, который я распечатываю методом imageFromCamera (), выглядит следующим образом: 4file:///file:/mnt /sdcard/TestFolder

Теперь, когда я пытаюсь получить доступ к этим фотографиям с помощью managedQuery, я получаю другой каталог. MediaStore.Изображения.Эскизы.EXTERNAL_CONTENT_URI.toString() выдает содержимое://media/external/images / thumbnails

В чем разница между этими двумя путями? И как я могу заставить managedQuery перейти к карте TestFolder для поиска изображений?

редактировать: я пытаюсь подключиться:

 Uri phoneUriII = Uri.parse(Environment.getExternalStorageDirectory() File.separator "testFolder");
imagecursor = managedQuery(phoneUriII, img, null,null, MediaStore.Images.Thumbnails.IMAGE_ID   "");
  

но этот код выходит из строя

Комментарии:

1. Вы имеете в виду, что хотите получить реальный путь к изображению из объекта URL? Нравится это ?

2. Я хочу, чтобы папка, в которой я сохраняю свои изображения, была преобразована в Uri, чтобы я мог передать i методу managedQuery.. Я думаю

3. Разве вы не можете просто использовать URL, который вы получаете из MediaStore, для извлечения двоичного потока? Попробуйте вызвать getData () для него или с помощью getContentResolver().openOutputStream(uri) .

4. Я тоже пробовал это (Uri temp = Uri.parse(data.toURI()); Log.d(«fototemp», data.toURI());) но он выводит «Фотография сделана: #намерение; действие =встроенные данные; конец», что также не является правильным путем. Совершенно запутался в этой теме

Ответ №1:

Извините, не совсем понимаю ваш вопрос.

Просто отправьте это как путь к URI.

Environment.getExternalStorageDirectory() File.separator «Тестовая папка»

Также проверьте, есть ли у вас разрешения на запись на SD-карту.

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  

Комментарии:

1. проблема не в записи, потому что я могу просматривать сделанные фотографии в галерее. Я пытаюсь использовать Uri phoneUriII = Uri.parse(Environment.getExternalStorageDirectory() File.separator «TestFolder»); imagecursor = managedQuery(phoneUriII, img, null, null, MediaStore. Изображения. Эскизы. IMAGE_ID «»); но это приводит к сбою

Ответ №2:

Я использую эту функцию в паре проектов, и она работает нормально.

 /**
 * Retrieves physical path to the image from content Uri
 * @param contentUri
 * @return
 */
private String getRealImagePathFromURI(Uri contentUri) {
    String[] proj = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(contentUri, proj, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}