这可能看起来是重复的,但我想我已经尝试了大多数发布的解决方案,但都没有成功。
我正在编写一个应用程序,该应用程序有时会通过电子邮件发送带有自定义扩展名(.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 类型?(如果有,怎么做?)
- 创建内容提供商?
- 两个都?(再次,如何?)