在android中注册新的mime类型
这和我以为已经解决的问题有关,但事实并非如此 我发现一些电子邮件客户端(例如,三星Galaxy SII内置电子邮件客户端)不支持sendIntent.setType()方法,并且在向电子邮件添加附件时,不会添加setType方法中指定的mime类型。结果是,当电子邮件到达时,我无法打开附件 所以,为了能够从任何电子邮件客户端打开附件,我想他们唯一的方法就是创建一个新的mime类型,该类型与我的自定义扩展关联 但是我找不到任何方法来注册一个新的mime类型。我知道这可以像一些应用程序那样完成(ASTRO文件浏览器),但我不知道还有什么地方可以找到关于添加新mime类型的信息 编辑(2012年10月1日)ASTRO文件资源管理器仅为其流程添加mime类型。它们不能在其过程之外读取,因此我没有任何它工作的示例 我一直在看MimeTypeMap源代码,看起来它只使用了一组预定义的mime类型,您无法添加新的mime类型 我尝试使用反射(只是为了检查)并能够添加mime类型,但它仅对我的进程可见,就好像我的进程有自己的MimeTypeMap副本一样,因此电子邮件客户端仍然不会打开附件 有人能帮忙吗在android中注册新的mime类型,android,email,mime-types,attachment,Android,Email,Mime Types,Attachment,这和我以为已经解决的问题有关,但事实并非如此 我发现一些电子邮件客户端(例如,三星Galaxy SII内置电子邮件客户端)不支持sendIntent.setType()方法,并且在向电子邮件添加附件时,不会添加setType方法中指定的mime类型。结果是,当电子邮件到达时,我无法打开附件 所以,为了能够从任何电子邮件客户端打开附件,我想他们唯一的方法就是创建一个新的mime类型,该类型与我的自定义扩展关联 但是我找不到任何方法来注册一个新的mime类型。我知道这可以像一些应用程序那样完成(AS
提前感谢据我所知,您的数据规范仅基于文件扩展名
.xyz
。因此,当您在意图过滤器中声明它时,您需要确保对所有参数尽可能通用,除了patternPath
尝试将其拆分为几个
标记,并确保其与mimeType
无关:
<data android:scheme="file" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.xyz" />
<data android:host="*" />
请参见以确保所有子类型都匹配
据我所知,文件的底层数据结构可能会导致某些设备出现问题。例如,假设您的
.xyz
文件类型是XML;电子邮件客户端可能认为提供text/xml
mime类型比您声明的类型更为具体,并调用它
在这种情况下,一个解决方案可能是声明多个意图过滤器,一旦还包括
。(这或多或少与建议相符。)尝试添加操作。发送和操作。将多个发送到应用程序的清单定义中。为我工作,因此我的应用程序出现在应用程序列表中,我可以与共享文件和内容
<intent-filter>
<action android:name="android.intent.action.GET_CONTENT" />
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
我认为这是不可能的。我试着回头看看,但还是放弃了。这对我来说是一个不错的选择,但不是必需的。我已经尝试过了,但对于一些电子邮件客户端(SGII)来说也不起作用