从 Android 上的 Gmail 应用程序下载附件的意图过滤器

2024-01-06

我有带有意图过滤器(ACTION_VIEW)的Android应用程序来打开文件并将其导入到我的应用程序中。我希望将文件附件从 Gmail 应用程序下载到我的应用程序中。某些文件类型(即 jpg、png、txt)可以正确保存,但有些文件类型则不能(即 doc、xls、ppt)。我相信我的活动有正确的意图过滤器,因为它适用于其他应用程序(即 dropbox),但不适用于 gmail 应用程序。有什么解决办法吗?


通过删除意图中的方案数据过滤器,我能够在 GMail 中的 Android 上弹出下载和预览按钮(删除方案行并尝试一下):

<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 文档,“如果没有为 Intent 过滤器指定方案,则所有其他 URI 属性都将被忽略。”删除方案和 URI 属性后,过滤意图的唯一其他方法是使用 Mime 类型,并且我们都知道自定义文件扩展名没有注册的 mime 类型。

作为参考,URI 的形式如下:

  • 方案://主机:端口/路径
  • 路径前缀
  • 路径模式

因此,如果没有计划,所有这些都会消失。发现上述内容后,我尝试了显而易见的方法——使用“*”作为方案,甚至尝试了“.*”。这些都不起作用。我希望其他人可以继续我的试验。但我相信这与选择正确的方案有关。不幸的是,我所知道的唯一方案是 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 文件作为附件发送到常规电子邮件客户端时,这也会导致您的应用程序打开。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Android 上的 Gmail 应用程序下载附件的意图过滤器 的相关文章

随机推荐