我希望能够从网络下载具有特定扩展名的文件,并将其传递给我的应用程序来处理它,但我无法弄清楚意图过滤器。文件类型不包含在 mimetypes 中,我尝试使用
<data android:path="*.ext" />
但我无法让它发挥作用。
以下是我在 AndroidManifest.xml 中定义活动以使其正常工作的方法。
<activity android:name="com.keepassdroid.PasswordActivity">
<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=".*\\.kdb" />
<data android:host="*" />
</intent-filter>
</activity>
The scheme
of file
表示这应该在打开本地文件(而不是像 HTTP 这样的协议)时发生。
mimeType
可以设置为*/*
匹配任何 mime 类型。
pathPattern
是您指定要匹配的扩展名的位置(在此示例中.kdb
). The .*
开头匹配任何字符序列。这些字符串需要双重转义,所以\\\\.
匹配字面句号。然后,以文件扩展名结束。 pathPattern 的一个警告是.*
如果这是一个正则表达式,则不是像您所期望的那样的贪婪匹配。此模式将无法匹配包含.
之前.kdb
。有关此问题的更详细讨论和解决方法,请参阅here https://stackoverflow.com/questions/3400072/pathpattern-to-match-file-extension-does-not-work-if-a-period-exists-elsewhere-i/8599921#8599921
最后,根据Android文档,两者host
and scheme
需要属性pathPattern
属性起作用,因此只需将其设置为通配符即可匹配任何内容。
现在,如果您选择.kdb
文件在像 Linda 文件管理器这样的应用程序中,我的应用程序显示为一个选项。我应该注意的是,仅此一项并不允许您在浏览器中下载此文件类型,因为它仅注册到文件方案。手机上安装像 Linda 文件管理器这样的应用程序本身通常就不允许您下载任何文件类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)