Не могу прочитать миниатюры на Android 10 (loadThumbnail) - PullRequest
1 голос
/ 20 февраля 2020

Я читаю эскизы с устройства, запрашивая MediaStore, используя MediaStore.Images.Thumbnails.getThumbnail(). Тем не менее, это устарело в Android 10 (API 29) с указателем на ContentResolver#loadThumbnail: https://developer.android.com/reference/android/provider/MediaStore.Images.Thumbnails

Однако я не могу заставить это работать ( в эмулируемом устройстве с API 29). Я скопировал несколько файлов JPEG на эмулируемое устройство, которые в итоге оказались в папке «Загрузки». Они хорошо отображаются в приложении Фотографии. Следующий код дает мне FileNotFoundException. Что на самом деле мне говорит «Нет контент-провайдера»?

try {

    Size thumbSize = new Size(100, 100);
    Uri thumbUri = Uri.fromFile(new File(imgPath));
    // imgPath: /storage/emulated/0/Download/pexels-photo-323490.jpeg
    // thumbUri: file:///storage/emulated/0/Download/pexels-photo-323490.jpeg

    Bitmap thumbBitmap;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        thumbBitmap = mContext.getContentResolver().loadThumbnail(thumbUri, thumbSize, null);
    } else {
        thumbBitmap = MediaStore.Images.Thumbnails.getThumbnail(mContext.getContentResolver(),
                imgId, MediaStore.Images.Thumbnails.MINI_KIND, null);
    }

    iconView.setImageBitmap(thumbBitmap);
} catch (Exception e) {
    Log.e("err", e.toString());
}

Исключение:

java.io.FileNotFoundException: No content provider: file:///storage/emulated/0/Download/pexels-photo-323490.jpeg

1 Ответ

0 голосов
/ 21 февраля 2020

Пожалуйста, попробуйте это, надеюсь, это сработает для Вас:

int thumbColumn = cur.getColumnIndexOrThrow(MediaStore.Images.ImageColumns._ID); 
int _thumpId = cur.getInt(thumbColumn); 
Uri imageUri_t = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,_thumpId);

GGK

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...