Использовать ExoPlayer без разрешения внешнего хранилища - PullRequest
0 голосов
/ 07 июня 2018

У меня есть приложение для Android с Xamarin Forms , которое использует ExoPlayer для воспроизведения потокового и локального видео.Когда приложение загружает .mp4 файлы, они сохраняются во внутреннем хранилище (Environment.SpecialFolder.Personal) и никогда не сохраняются во внешнем местоположении, например на SD-карте.

Я хочу ограничить разрешения, которые требуются приложению, и я не хочу добавлять READ_EXTERNAL_STORAGE или WRITE_EXTERNAL_STORAGE.В других частях приложения я успешно записывал и считывал файлы во внутреннее хранилище без добавления каких-либо разрешений для внешнего хранилища.

Я не могу загрузить свой .mp4 файл в ExoPlayer, пока не добавлю <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> (илиWRITE версия) до AndroidManifest.xml.ExoPlayer покажет мне тост «В доступе к хранилищу было отказано» и откажется воспроизводить видео.Я считаю, что ExoPlayer проверяет наличие разрешения на внешнее хранилище, хотя я не верю, что оно необходимо, и завершает работу, фактически не пытаясь воспроизвести видео.

Как я могу заставить ExoPlayer воспроизводить видеобез проверки разрешений внешнего хранилища?

1 Ответ

0 голосов
/ 19 июня 2018

Звучит так, будто вы вызываете метод MaybeRequestReadExternalStoragePermission.Метод MaybeRequestReadExternalStoragePermission отвечает за то, чтобы приложение имело права доступа к внешнему хранилищу.ExoPlayer не обрабатывает это внутренне, но предполагает, что разработчик приложения вызывает этот метод, если приложению требуется доступ к контенту из внешнего хранилища.

См. Реализацию: https://github.com/google/ExoPlayer/blob/000f3f23056aae30a98ac74fb30e484844548b3e/library/core/src/main/java/com/google/android/exoplayer2/util/Util.java#L159

Убедитесь, что вы не вызываете метод MaybeRequestReadExternalStoragePermission из своего исходного кода (обычно это делается в классе PlayerActivity, из InitializePlayer метод).Теперь вы также можете удалить <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> из AndroidManifest.xml.

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

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