android - Android Intent Filter:无法从预览中打开音频文件?
问题描述
我希望我的 android 应用程序能够从 VIEW 意图打开 MP3 文件和其他一些格式。我几乎可以完成这项工作,但在某些情况下它不会出现在“打开方式...”菜单中。
例如,如果我在“文件”中选择一个 mp3 文件并选择“打开方式”,我会看到一个包含我的应用程序列表(屏幕截图中的“N-Space”)。
但是当我点击 mp3 文件时,它会打开一个预览。如果我从这个预览屏幕中选择“打开方式”,我会得到一组不同的应用程序,其中不包括我的应用程序。
为什么同一个文件会出现一组不同的应用程序?它是使用不同的 MIME 类型还是不同的操作类型?如何让我的应用程序显示在该列表中?
这是我的清单的相关部分:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="content" />
<data android:mimeType="audio/mpeg" />
<data android:mimeType="audio/mp3" />
<data android:mimeType="audio/mpeg3" />
<data android:mimeType="audio/x-mpeg-3" />
<!-- ... and more for other file types -->
</intent-filter>
我不能使用audio/*
,因为我的应用只支持某些音频格式。
解决方案
事实证明,第二个“打开方式...”菜单最多显示 3 个应用程序。我卸载了其中一些,然后我的应用程序出现了。可能是一个错误?
推荐阅读
- python - 多个进程的Python3管道输出到单个进程
- jquery - Ajax POST 调用返回 404,即使脚本存在
- c# - 在 Visual Studio 中调试时,某些对象显示为 System.__ComObject
- java - 为什么每次单击时它都会移动同一个圆圈,而不管距离如何?
- c - 使用 c 从字符串中删除重复的连续字符
- go - 我应该使用哪种协议在多个节点之间交换文件?
- java - Lamba 表达式会自动为其入口参数创建新对象吗?
- php - 如何在 Laravel 5.6 中使用路由模型绑定更新用户
- python - 如何将 Pandas DataFrame Column 值与多级索引进行比较?
- php - 如何在 SQL Query 中获取特定 ID