Я читаю эскизы с устройства, запрашивая 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