我有意向过滤器(ACTION_VIEW)的Android应用程序打开文件并将其导入到我的应用程序。我希望从Gmail应用程序下载文件附件到我的应用程序。某些文件类型(即jpg,png,txt)被正确保存,但有些不是(例如doc,xls,ppt)。我相信我的活动具有正确的意图过滤器,因为它可以从其他应用程序(即Dropbox)运行,但不能运行gmail应用程序。有没有解决方案?意图过滤器从Android上的Gmail应用程序下载附件
回答
我能够在我的意图移除式数据过滤器,以使下载和预览按钮,弹出在Android中的GMail(删除方案行,并给它一试):
<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" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.ext" />
<data android:host="*" />
</intent-filter>
然而,根据Android文档,“如果没有为意图过滤器指定方案,则忽略所有其他URI属性。”除去方案和URI属性,过滤意图的唯一方法是使用Mime类型,并且我们都知道自定义文件扩展名没有注册mime类型。
作为参考,URI的形式为:
- 方案://主机:端口/路径
- pathPrefix
- pathPattern
因此,没有一个方案中,所有的这下降。在发现上述内容之后,我尝试了很明显的方法 - 为该方案使用“*”,甚至尝试过“。*”。这些都没有工作。我希望别人能够试试我的试炼。但我相信这与选择正确的方案有关。不幸的是,我所知道的唯一方案是http https的内容和文件,以上都不是魔术的子弹。
编辑::::::::
我昨天解决了这个问题。请参阅我的解决方案:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/*" host="*" android:pathPattern=".*.ext" android:scheme="content" />
</intent-filter>
此意图将导致gmail显示下载/预览按钮。实际上,当.ext文件作为附件发送到常规电子邮件客户端时,这也会导致您的应用程序打开。
因为这是谷歌有关“gmail附件意图过滤器”的最大问题之一,我发现上面的答案不工作在我的情况下,我张贴我的研究结果。
为了从Gmail的意向登记,我们需要支持的内容方案:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="content" android:mimeType="*" android:host="*" />
</intent-filter>
在我测试,URI不包含文件扩展名,即使它是显示在Gmail附件的情况下,所以使用android:pathPattern会阻止接收Gmail的意图。
由于事实上,注册到所有mimeTypes是一个矫枉过正的问题,我调试了Intent对象的内容(在Java端),发现在我的应用程序中text/plain就足够了(所以你的作业是找到适当的mimeTypes for你的申请)。我的最终意图过滤器如下所示:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="content" android:mimeType="text/plain" android:host="*" />
</intent-filter>
** android:scheme =“file”**。这不需要吗? –
- 1. Gmail不会从Android上的应用程序发送附件
- 2. 从php下载gmail附件
- 3. NFC意图过滤器Android - 匹配应用程序/ vnd.wfa.wsc记录
- 4. Android上的意图过滤器
- 5. Android:文件扩展名意图过滤器无法与GMail/Downloads应用程序正常工作
- 6. Android意图过滤器:将附件添加到SMS/MMS消息
- 7. Android - 意图过滤器?
- 8. 如何下载gmail附件?
- 9. 检测应用程序接收的意图过滤器
- 10. 意向过滤器Android与所有GPS应用程序
- 11. Android市场应用程序试图从市场上下载应用程序
- 12. 如何为Mifare卡创建应用程序特定的意图过滤器? (Android)
- 13. 如何设置意图过滤器,使我的应用程序进入Android
- 14. 从意图过滤器开始应用程序后发送一个响应
- 15. 意图过滤器/意图的发件人,android
- 16. 无法使用意图从我的应用程序发送带有附件的电子邮件(Gmail)
- 17. 试图从Android应用程序内下载文件
- 18. NDEF意图过滤器不会在Android中6启动应用程序,7
- 19. 我可以在Android应用程序中定义动态意图过滤器吗?
- 20. 使用意图过滤器用Adobe AIR应用程序打开文件类型
- 21. 从网上下载的应用程序
- 22. android gmail在新的Gmail应用程序版本中打开应用程序附件URI问题
- 23. Android的Gmail附件
- 24. 添加一个意图过滤器为默认的邮件应用程序
- 25. 什么是Android的意图过滤器?
- 26. 没有意图过滤器的Android BroadcastReceiver
- 27. 如何过滤Android应用程序从谷歌下载到特定设备?
- 28. Android:我应该使用什么类型的意图过滤器
- 29. 安卓4.2.2 - GMail应用程序不在意图选择器
- 30. 如何使用IMAP从C#下载gmail的附件?
该应用需要读取预览按钮发布的GMail“内容”URI的权限?我的应用程序没有权限,当我尝试打开它时,我得到无权限异常。阅读下载按钮发布的'文件'数据没有问题。 – user1139880
用户 - 不知道。我在我的应用中拥有以下权限,但由于不同的用途,我添加了它们,而不是用于GMail预览/下载。你还可以验证我发布的意图是否导致显示gmail下载/预览?我知道我自己已经在Froyo,姜饼和冰淇淋三明治中进行了测试,它对我都有效。 –
这导致我的意图过滤器触发任何时候,我在我的通知栏中得到一个新的Gmail,我去打开它。有其他人有这个问题吗?这绝对是这个过滤器造成的。 – BriCo84