Я использую курсор для запроса списка видео. При выборе файла путь, который я получаю:
/ хранилище / 415A-1609 / WhatsApp / Медиа / WhatsApp Animated
Gifs / VID-20190701-WA0001.mp4
В обычных случаях я получаю
/ хранилище / эмуляция / 0 / WhatsApp / Медиа / WhatsApp Animated
Gifs / VID-20190701-WA0001.mp4
Код:
private final String[] videosProjection = new String[]{
MediaStore.Video.Media._ID,
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.DATA,
MediaStore.Video.Media.MIME_TYPE,
MediaStore.Video.VideoColumns.DURATION};
contentResolver.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
videosProjection,
MediaStore.Video.Media.BUCKET_DISPLAY_NAME + " =?",
new String[]{album}, MediaStore.Video.Media.DATE_ADDED)
Работает хорошо в большинстве случаев, за исключением нескольких устройств Samsung, которые возвращают этот путь, когда я пытаюсь выбрать видео WhatsApp. Этот сегмент URI («/ storage / 415A-1609») отсутствует / является частью каких-либо существующих корней в устройстве.
Я использую FileProvider, чтобы получить URI для файла как
private fun getVideoUri() = FileProvider.getUriForFile(this, packageName.plus(".provider"), File("<file path mentioned above>"))
?.also { it.grantReadPermission(this) }
Любые указатели приветствуются.