gpt4 book ai didi

android - 在 android 中注册新的 mime 类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:31 26 4
gpt4 key购买 nike

这与问题 how to open an attachment with my applicacion from within the email app? (mime type, intent filter ...) 有关我以为我已经解决了,但事实并非如此。

我发现某些电子邮件客户端(例如,内置电子邮件客户端的三星 Galaxy SII)不支持 sendIntent.setType() 方法,并且在向电子邮件添加附件时,它不会添加在中指定的 mime 类型设置类型方法。结果是电子邮件到达时我无法打开附件。

因此,为了能够打开来自任何电子邮件客户端的附件,我认为他们唯一的办法就是创建一个与我的自定义扩展关联的新 MIME 类型。

但我找不到任何方法来注册新的 MIME 类型。我知道它可以像某些应用程序那样完成(ASTRO 文件资源管理器),但我不知道还能在哪里查找有关添加新 MIME 类型的信息。

编辑(2012 年 10 月 1 日) ASTRO 文件资源管理器仅为其进程添加 mime 类型。它们不能在其过程之外读取,所以我没有任何它工作的例子。

我一直在查看 MimeTypeMap 源代码,看起来它只使用一组预定义的 mime 类型,您不能添加新的。

我尝试使用反射(只是为了检查)并且能够添加一个 MIME 类型,但它只对我的进程可见,就好像我的进程有自己的 MimeTypeMap 副本一样,所以电子邮件客户端仍然无法打开附件。

有人可以帮忙吗?

提前致谢

最佳答案

据我了解,您的数据规范仅基于文件扩展名 .xyz .因此,当您在 Intent 过滤器中声明它时,您需要确保对除 patternPath 之外的所有参数都尽可能通用。 .

试着把它分成几个 <data>标签并确保它与 mimeType 无关:

    <data android:scheme="file" />                               
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.xyz" />
<data android:host="*" />

另见 the documentation on <data> 以确保所有子类型匹配。

据我了解,您的文件的底层数据结构可能会导致某些设备出现问题。例如,假设您的 .xyz文件类型为 XML;电子邮件客户端可能认为提供 text/xml mime 类型比您声明的类型更具体,并改为调用它。

在这种情况下,解决方案可能是声明多个 Intent 过滤器,一次还包括 <data android:mimeType="text/xml" /> . (这或多或少符合 this answer 的建议。)

关于android - 在 android 中注册新的 mime 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12528056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com