Не удается определить корневой путь для определенных файлов с помощью FileProvider - PullRequest
0 голосов
/ 05 июля 2019

Я использую курсор для запроса списка видео. При выборе файла путь, который я получаю:

/ хранилище / 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) }

Любые указатели приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...