xamarin - 使用没有外部存储权限的 ExoPlayer
问题描述
我有一个使用Xamarin Forms制作的 Android 应用程序,它使用 ExoPlayer 播放流媒体和本地视频。当.mp4
应用程序下载文件时,它们会保存到内部存储 ( Environment.SpecialFolder.Personal
),而不会保存到 SD 卡等外部位置。
我想限制应用程序所需的权限,并且不想添加 READ_EXTERNAL_STORAGE 或 WRITE_EXTERNAL_STORAGE。在应用程序的其他部分,我已成功将文件写入和读取到内部存储,而无需添加任何外部存储权限。
.mp4
除非我将(<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
或WRITE
版本)添加到AndroidManifest.xml
. ExoPlayer 将向我显示“访问存储的权限被拒绝”toast 并拒绝播放视频。我相信 ExoPlayer 正在测试是否存在外部存储权限,即使我认为不需要它,并且在没有实际尝试播放视频的情况下退出。
如何在不测试外部存储权限的情况下强制 ExoPlayer 播放视频?
解决方案
听起来您正在调用该MaybeRequestReadExternalStoragePermission
方法。该MaybeRequestReadExternalStoragePermission
方法负责确保 App 具有访问外部存储的权限。ExoPlayer 不会在内部处理此问题,但假定应用程序开发人员在应用程序需要从外部存储访问内容时调用此方法。
确保不要MaybeRequestReadExternalStoragePermission
从源代码中调用方法(通常这是在PlayerActivity
类中从InitializePlayer
方法中完成的)。现在您也可以<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
从AndroidManifest.xml
.
请注意,如果您尝试在没有权限的情况下访问外部存储,您的应用程序将会崩溃。
推荐阅读
- javascript - 复杂对象中的javascript自引用
- reactjs - axios 结合 url api 为什么返回 promise 不值?
- python - 过滤/插值 x,y 点到特定的点数,并包含要包含的特定点的列表
- java - 使用多页方法(页面对象)进行测试 - Selenium Webdriver
- html - Bootstrap 4 轮播,显示 3. Advance 1
- java - 如何实现休眠
- node.js - 猫鼬更新多个文档,然后为列表中的其余文档设置新值
- php - 在页面/帖子上打印 WordPress API 调用
- c++ - C++:绘制随机布尔值的性能
- sql - SQL 连接表两次