【发布时间】: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