【问题标题】:Permission denied while sharing content uri from intent via fileprovider通过文件提供程序从意图共享内容 uri 时权限被拒绝
【发布时间】:2021-01-07 16:50:01
【问题描述】:

我已从下载管理器下载数据,获取其本地 uri 并转换为内容 uri 获取此 content://com.myapp.name.provider/external_path/seedsheet-Jan-07-22-31_1610037996323.mp4

当我尝试通过意图打开它时如何

val intent = Intent(Intent.ACTION_VIEW)
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
        val localUri = downloadItem.localUri.replace("file://", "")
        val contentUri = FileProvider.getUriForFile(requireContext(), requireContext().packageName + ".provider", File(localUri))
    intent.setDataAndType(contentUri, fileHelper.getMimeType(requireContext(), contentUri))
    intent.putExtra(Intent.EXTRA_STREAM, contentUri);
    startActivity(intent)

我可以在 android R 上播放文件,但是当我尝试在 android Q 上播放时,我得到“文件无法播放” 通过 MX 播放器。此外,当我尝试图像时,甚至图像都无法打开。打开log cat的时候,写的是权限被拒绝,找不到文件。

【问题讨论】:

  • 没有。你没有告诉你你做了什么,你之前已经问过这个但跑了:stackoverflow.com/questions/65606320/…
  • 而且您并没有告诉您的文件提供程序尝试从下载文件夹中提供文件,这在 Q 上是不可能的,但在 Android 11 上却是。
  • 如前所述:使用您可以从下载管理器获得的 uri。不要乱用路径和提供程序。而且您不需要任何许可。
  • 你能告诉我如何从下载管理器获取内容 uri 吗?
  • 你得到了一个光标。为此,您必须使用该 uri。在那里发布完整的代码。

标签: android android-intent fileprovider


【解决方案1】:

您的应用具有访问文件系统的适当权限?

【讨论】:

  • 是的,它确实具有对存储的读写权限。在 android R 上,当我共享文件时,它被 facebook、instagram、gallery 等检测到并且播放流畅,但是当我在 android Q 上使用它时,没有应用程序可以读取媒体。每个应用几乎都说无法读取这种文件。
猜你喜欢
  • 2018-02-04
  • 2020-10-28
  • 2016-09-05
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多