当前位置: 首页 > 知识库问答 >
问题:

其他应用程序无法播放Android内容Uri

阮阳曦
2023-03-14

我使用下载管理器将文件下载到外部存储器。我使用设置下载文件夹的目标

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName)

成功后,我用

val fileUri=cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI))

这给了我这个

file:///storage/emulated/0/Download/dishapatani_Jan%2007%2C%2008%3A07_1609986166669.mp4

现在我试着用intent播放这个视频文件

  val uri=Uri.parse(" file:///storage/emulated/0/Download/dishapatani_Jan%2007%2C%2008%3A07_1609986166669.mp4")
        val intent = Intent()
        intent.action = Intent.ACTION_VIEW
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)

        val contentUri = FileProvider.getUriForFile(requireContext(), requireContext().packageName + ".provider", File(localUri))

        intent.setDataAndType(contentUri, "video/mp4")
        intent.setData(contentUri)
        startActivity(intent)

这里的内容Uri是content://com.myapp.provider/external_path/dishapatani_Jan%2007%2C%2008%3A07_1609986166669.mp4

但当我使用action\u share intent时,它也不会被其他应用程序识别。

此外,必须删除包含file://的文件uri,并将其替换为/storage/emulated/0/Download/dishapatani\u Jan 07,08:07\u 1609986166669。mp4“else应用程序崩溃,表示未配置根目录。

这是我的提供者路径

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_path" path="/Download" />
</paths>

和Manifeat

 <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>
        </provider>

共有1个答案

蓟雪峰
2023-03-14

不要乱搞路径、URIE和你自己的文件提供者。

您从downloadmanager获得了(或可以获得)一个uri。

用它来播放文件。

 类似资料:
  • 标记为“good”的文件可以正确播放,而标记为“bad”的文件则不能。两个文件在同一个目录中;两个文件都使用音乐播放器播放;并且这两个文件都可以在Windows7机器上使用Python3.4和pygame。

  • 使用AVCaptureSession重建应用程序(文件路径url保存到coreData)时不播放视频 文件路径在重建前后未更改。 file:///private/var/mobile/Containers/Data/Application/3DA93FBC-9A20-40B4-A017-B3D5C7768301/tmp/63F6CEED-3202-4F5F-999B-5F138D73635D.mp

  • 使用 oh-my-zsh 官网 http://ohmyz.sh/ 代码 https://github.com/robbyrussell/oh-my-zsh 安装步骤 先安装 zsh 安装 oh-my-zsh 以后环境变量在 ~/.zshrc 里 alias 俗称别名,是一个linux命令 举例:在git里面我们最常用的命令是查看状态,可以又太长 于是 vi ~/.zshrc 增加如下别名定义 al

  • 问题内容: 我希望能够启动活动或服务并尽快获取该进程的PID,这将是最好的情况。除了浏览/ proc目录外,我是否还有其他选择,否则会导致活动/服务启动到我在proc中找到所需时间之间的时间量竞争状态发生变化目录并开始观察? 问题答案: 我认为您需要使用ActivityManager:有关过程信息,请参见http://developer.android.com/reference/android/

  • 我试图通过将提供程序的设置为来破坏安全性,但是会在内部检查自己是否导出,如果导出了,它会抛出一个异常。

  • 我正在用xamarin开发一个应用程序,用户可以用它来播放电影。我需要应用程序从内存流播放电影,而不是直接从url或文件。是否有一个播放器控件或库,我可以使用它来播放来自mmemory流的电影?