代码之家  ›  专栏  ›  技术社区  ›  David Kolar

在没有外部存储权限的情况下使用Exoplayer

  •  0
  • David Kolar  · 技术社区  · 6 年前

    我有一个Android应用程序 香豆素形式 它使用Exoplayer播放流媒体和本地视频。什么时候? .mp4 文件由应用程序下载,并保存到内部存储( Environment.SpecialFolder.Personal )永远不要到外部位置,如SD卡。

    我想限制应用程序所需的权限,但不想添加“读取外部存储”或“写入外部存储”。在应用程序的其他部分,我已成功地将文件写入和读取到内部存储,而无需添加任何外部存储权限。

    我无法加载 MP4 除非我添加 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> (或 WRITE 版本) AndroidManifest.xml . exoplayer将向我显示“访问存储的权限被拒绝”toast并拒绝播放视频。我相信exoplayer正在测试外部存储许可的存在性,即使我不认为它是必需的,并且退出时没有实际尝试播放视频。

    如何在不测试外部存储权限的情况下强制Exoplayer播放视频?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Maurits van Beusekom    6 年前

    听起来你在打电话给 MaybeRequestReadExternalStoragePermission 方法。这个 可能需要外部存储许可 方法负责确保应用程序具有访问外部存储的权限。exoplayer不在内部处理这个问题,但假设应用程序开发人员在应用程序需要从外部存储访问内容时调用这个方法。

    见实施: https://github.com/google/ExoPlayer/blob/000f3f23056aae30a98ac74fb30e484844548b3e/library/core/src/main/java/com/google/android/exoplayer2/util/Util.java#L159

    确保你不打电话给 可能需要外部存储许可 方法(通常在 PlayerActivity 班级,来自 InitializePlayer 方法)。现在您还可以删除 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> AndroidManifest.xml

    请注意,如果在没有权限的情况下尝试访问外部存储,则应用程序将崩溃。