2

我想用我的应用打开电子邮件中的音频附件。目前我的意图过滤器是这样的:

<intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <action android:name="android.intent.action.EDIT" />
        <action android:name="android.intent.action.PICK" />
        <category android:name="android.intent.category.DEFAULT" />
         <data android:mimeType="audio/wav" />
        <data android:scheme="http" android:host="*" android:pathPattern=".*\\.wav"/>
        <data android:scheme="https" android:host="*" android:pathPattern=".*\\.wav"/>
        <data android:scheme="content" android:host="*" android:pathPattern=".*\\.wav"/>
        <data android:scheme="file" android:host="*" android:pathPattern=".*\\.wav"/>
</intent-filter>

这适用于我想要的一切,除了电子邮件附件。目前,如果我收到一个 wav 文件,我唯一能做的就是预览它,然后用 Winamp 打开它(很明显,第 3 方应用程序可以进入)。我找不到我应该添加什么来做到这一点,有人知道吗?

编辑

以下是 LogCat 对此事的看法。当我单击预览时,我得到

01-10 19:28:52.691: INFO/ActivityManager(109): Starting: Intent { dat=content://gmail-ls/messages/xxxxxxx%40gmail.com/439/attachments/0.1/BEST/false cmp=com.google.android.gm/.ViewAttachmentActivity } from pid 19483

奇怪的是 Winamp 会自动打开,并且没有设置为默认值。我别无选择...

4

2 回答 2

2

替换audio/wavaudio/*使其工作,但这显然是不受欢迎的行为。

于 2011-01-10T20:11:47.200 回答
0

电子邮件客户端似乎以任意方式为附件选择 mimetype,因此打开它们的意图过滤器必须考虑所有可能性。搜索互联网有助于找到所有可能的类型,如果不需要<data/>通配符(如OP 所说),应该为每个类型添加一个过滤器。audio/*

无论如何,建议按 mimetype 过滤作为首选,而不是按文件扩展名过滤(请参阅android-dev ml 上的此线程)。

(感谢弗莱德利)

于 2011-01-11T14:44:20.530 回答