В своем проекте я использую этот код для получения превьюшек:
Cursor cursor = crThumb.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.Images.Media._ID }, MediaStore.Images.Media.DATA + "='" + file.getAbsolutePath() + "'", null, null);
if (cursor != null) {
if (cursor.getCount() > 0) {
cursor.moveToFirst();
thumbnailBitmap = MediaStore.Images.Thumbnails.getThumbnail(crThumb, cursor.getInt(0), MediaStore.Images.Thumbnails.MINI_KIND, null);
}
cursor.close();
}
На моем устройстве к одному рисунку может вести несколько разных путей. Например,
/storage/emulated/0/Download/dog.jpg,
/storage/emulated/legacy/Download/dog.jpg,
/sdcard/Download/dog.jpg и
/mnt/sdcard/Download/dog.jpg указывают на один и тот же файл - dog.jpg. Но код выше отлично работает только для
/storage/emulated/0/Download/dog.jpg, но не работает для всех остальных (cursor.getCount()==0). Как это обойти? Как получать превьюшку для всех остальных путей?