【发布时间】:2012-09-07 13:19:42
【问题描述】:
这可能看起来是重复的,但我想我已经尝试了大多数发布的解决方案,但都没有成功。
我正在编写一个应用程序,它有时会通过电子邮件发送带有自定义扩展名 (.xyz) 的文件
然后我需要从电子邮件应用程序中打开这些文件,但我无法使其工作。
在阅读了本网站和其他网站上的大量帖子后,我想出了一个意图过滤器,它允许我从文件资源管理器(但不能从电子邮件应用程序)打开这些文件。
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" android:host="*"
android:pathPattern=".*\\.xyz"/>
</intent-filter>
然后我尝试在网络浏览器中打开电子邮件和附件,但没有成功。 (文件已下载,但后来我无法打开它)。 我在 LogCat 中遇到了这个错误
09-14 12:30:50.516: D/DownloadManager(2341): android.content.ActivityNotFoundException:
No Activity found to handle Intent
{ act=android.intent.action.VIEW
dat=file:///mnt/sdcard/download/samplefile.xyz
typ=message/rfc822 flg=0x10000000 }
虽然我觉得对文件使用 rfc822 mime 类型很奇怪,但我更改了意图过滤器并添加了
android:mimeType="message/rfc822"
到数据部分。
然后我可以在从浏览器下载文件后打开文件,但我无法再从文件资源管理器打开文件(这有点道理)。
即使添加 android:mimeType="/" 也有相同的效果。 (从 ASTRO 文件资源管理器中看到的文件的 mime 类型为空)。
但我真正需要的是从电子邮件应用程序中打开文件,而这些方法都没有帮助。打开邮件时,我什至无法点击附件。
我可能需要创建一个自定义的 mime 类型,但我无法找到如何去做。
那么,问题是,我需要做什么才能使用我的应用程序打开电子邮件附件(来自内置电子邮件应用程序)?
- 创建 MIME 类型? (如果有,怎么做?)
- 创建内容提供者?
- 两者都有? (再次,如何?)
【问题讨论】:
标签: android mime-types email-attachments intentfilter