1

这可能看起来是重复的,但我想我已经尝试了大多数发布的解决方案,但都没有成功。

我正在编写一个应用程序,该应用程序有时会通过电子邮件发送带有自定义扩展名(.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 类型?(如果有,怎么做?)
  • 创建内容提供商?
  • 两个都?(再次,如何?)
4

1 回答 1

1

以防万一,有人遇到与我相同的问题,我终于能够让它工作。我遇到的问题是,在发送带有附件的电子邮件时,我使用的是 mime 类型“message/rfc822”。将其更改为“image/xyz”就可以了,当然还可以使用将 mime 类型设置为“*/*”的意图过滤器。

发送电子邮件时有一个不同的行为,您可以为每个可以发送的应用程序选择一个选择器,不仅是邮件应用程序(彩信、WhatsApp、蓝牙……),但在我的情况下它很好。

于 2012-09-18T15:12:45.303 回答