0

我有一个前台服务,它应该启动一个隐含的意图来播放一个 mp4 文件。意图是这样的:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(media_uri);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
}

该变量media_uri包含 mp4 文件的 Uri。意图过滤器是这样的:

<service
    android:name=".MahalayaService"
    android:exported="false"
    android:taskAffinity=""
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="application/mp4" />
    </intent-filter>
</service>

意图启动应用程序列表,但它们都不能播放 mp4 文件:

在此处输入图像描述

请注意,我安装了一些可以播放 mp4 文件的程序。当我从文件浏览器单击 mp4 文件时,我看到:

在此处输入图像描述

我哪里错了?为什么隐含意图不启动正确的应用程序集来播放 mp4 文件?我是否设置了错误的 MIME 类型?

4

1 回答 1

0

找到了答案!是的,我设置了错误的 MIME 类型。

我将意图intent.setDataAndType(media_uri, "video/*");修改为并将意图过滤器修改为<data android:mimeType="video/mp4" />. 这解决了问题。

于 2020-03-29T08:18:42.463 回答