#android #mediastore
#Android #mediastore
Вопрос:
В некоторых редких ситуациях MediaStore
возвращается null
при попытке запроса на MediaStore.Video.VideoColumns.DISPLAY_NAME
использование следующего фрагмента кода
String displayName = cursor.getString(cursor.getColumnIndex(MediaStore.Video.VideoColumns.DISPLAY_NAME));
Я предполагаю, что это может быть связано с именем файла, поскольку оно сообщается только на нескольких устройствах. Однако я предполагаю, что отображаемые имена файлов не могут быть нулевыми, поэтому это немного странно, что MediaStore
возвращается null
. Кто-нибудь сталкивался с подобной проблемой?
Комментарии:
1. Для Android 9 и ниже оно обнуляется. Но на Android 10 оно становится ненулевым.
2. @AnggrayudiH Как оно может стать нулевым? Я смотрел
MediaProvider
, и кажется, чтоDATA
столбец используется дляDISPLAY_NAME
косвенного поиска, когда прямой запрос возвращает null. КакDATA
поле может стать нулевым для файла, присутствующего в хранилище?3. Поле ДАННЫХ устарело в Android 10 и может содержать или не содержать никаких данных вообще. Наиболее логичным является то, что если DISPLAY_NAME пустое, то поле TITLE должно быть наиболее логичным альтернативным полем, хотя это поле не содержит расширения media.
Ответ №1:
У нас такая же проблема на одном устройстве.
Если значение DISPLAY_NAME равно null, то можно использовать ЗАГОЛОВОК.
String displayName = cursor.getString(cursor.getColumnIndex(MediaStore.Video.VideoColumns.DISPLAY_NAME));
if (displayName == null) {
displayName = cursor.getString(cursor.getColumnIndex(MediaStore.Video.VideoColumns.TITLE));
}