Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中注册新的mime类型_Android_Email_Mime Types_Attachment - Fatal编程技术网

在android中注册新的mime类型

在android中注册新的mime类型,android,email,mime-types,attachment,Android,Email,Mime Types,Attachment,这和我以为已经解决的问题有关,但事实并非如此 我发现一些电子邮件客户端(例如,三星Galaxy SII内置电子邮件客户端)不支持sendIntent.setType()方法,并且在向电子邮件添加附件时,不会添加setType方法中指定的mime类型。结果是,当电子邮件到达时,我无法打开附件 所以,为了能够从任何电子邮件客户端打开附件,我想他们唯一的方法就是创建一个新的mime类型,该类型与我的自定义扩展关联 但是我找不到任何方法来注册一个新的mime类型。我知道这可以像一些应用程序那样完成(AS

这和我以为已经解决的问题有关,但事实并非如此

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

所以,为了能够从任何电子邮件客户端打开附件,我想他们唯一的方法就是创建一个新的mime类型,该类型与我的自定义扩展关联

但是我找不到任何方法来注册一个新的mime类型。我知道这可以像一些应用程序那样完成(ASTRO文件浏览器),但我不知道还有什么地方可以找到关于添加新mime类型的信息

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

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

我尝试使用反射(只是为了检查)并能够添加mime类型,但它仅对我的进程可见,就好像我的进程有自己的MimeTypeMap副本一样,因此电子邮件客户端仍然不会打开附件

有人能帮忙吗


提前感谢

据我所知,您的数据规范仅基于文件扩展名
.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)来说也不起作用