Android 隐式意图未显示用于播放 mp4 文件的正确应用程序列表
Android implicit intent does not show correct list of apps for playing mp4 file
我有一个前台服务,它应该启动播放 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>
意图启动一个应用程序列表,但其中 none 个可以播放 mp4 文件:
请注意,我安装了一些可以播放mp4 文件的程序。当我从文件浏览器中点击 mp4 文件时,我看到了这个:
我哪里错了?为什么隐式意图不启动正确的应用程序集来播放 mp4 文件?我是否设置了错误的 MIME 类型?
找到答案了!是的,我设置了错误的 MIME 类型。
我将 intent 修改为 intent.setDataAndType(media_uri, "video/*");
,并将 intent-filter 修改为 <data android:mimeType="video/mp4" />
。这解决了问题。
我有一个前台服务,它应该启动播放 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>
意图启动一个应用程序列表,但其中 none 个可以播放 mp4 文件:
请注意,我安装了一些可以播放mp4 文件的程序。当我从文件浏览器中点击 mp4 文件时,我看到了这个:
我哪里错了?为什么隐式意图不启动正确的应用程序集来播放 mp4 文件?我是否设置了错误的 MIME 类型?
找到答案了!是的,我设置了错误的 MIME 类型。
我将 intent 修改为 intent.setDataAndType(media_uri, "video/*");
,并将 intent-filter 修改为 <data android:mimeType="video/mp4" />
。这解决了问题。