У меня есть Moto X Pure 2015 с Android 6.0 на доске. Перед обновлением до Android 6 мой код получения миниатюры последнего снятого изображения на внешнем хранилище отлично работает. Более того, этот код работает на всех проверенных мной устройствах (несколько десятков). Я не могу локализовать то, что было изменено в Android 6, чтобы таким образом сломать мой код. Все динамические разрешения предоставляются и «пишите на внешнее хранилище». Итак, вот что я делаю, чтобы получить эскиз. Сначала я запрашиваю курсор и получить _id первого основанного файла (Media - это просто контейнер некоторых данных, в том числе _id из основанного изображения):Images.Thumbnails.getThumbnail на Android 6 для файла на SD-карте возвращается null
Uri baseUri = Images.Media.EXTERNAL_CONTENT_URI;
Uri query = baseUri.buildUpon().appendQueryParameter("limit", "1").build();
String[] projection = new String[] { ImageColumns._ID, ImageColumns.ORIENTATION, ImageColumns.DATE_TAKEN };
String selection = ImageColumns.DATA + " like '%" + dirName + "%' AND " + ImageColumns.MIME_TYPE
+ "='image/jpeg'";
String order = ImageColumns.DATE_TAKEN + " DESC," + ImageColumns._ID + " DESC";
Cursor cursor = null;
try
{
cursor = resolver.query(query, projection, selection, null, order);
if (cursor != null && cursor.moveToFirst())
{
final long id = cursor.getLong(0);
externalMedia = new Media(id, cursor.getInt(1), cursor.getLong(2), ContentUris.withAppendedId(
baseUri, id));
}
} finally
{
if (cursor != null)
{
cursor.close();
}
}
Теперь я пытаюсь получить растровое изображение для изображения с этой _id (externalMedia контейнер содержит это идентификатор):.
Bitmap bitmap = Images.Thumbnails.getThumbnail(resolver, externalMedia.id, Images.Thumbnails.MICRO_KIND, null);
и растровый равна нулю ((((
я не нашел каких-либо изменений в Android 6 из Android 5 в ContentResolver и Images.Thumbnails частей Так что теперь я m застрял в этом вопросе.
Кажется, вам нужно запросить разрешение во время выполнения: См. Http://stackoverflow.com/a/33618259/5778152 –
Я запрашиваю все необходимые разрешения во время выполнения в начале приложения. Я дважды проверял чтение \ запись на внешнее хранилище - он предоставляется. – Grinchman