我有两个自定义文件类型,我的应用程序可以处理,我希望能够从各种其他应用程序打开.我所拥有的功能包括Gmail和设置文件浏览器,但有几个第三个文件管理器(包括三星我的文件和Astro文件管理器)无法识别这些文件类型属于我的应用程序.有没有办法制作一个意图过滤器,使这些文件浏览器应用程序能够识别这些文件应该由我的应用程序打开?
这是现有的意图过滤器:
android:icon="@drawable/book"
android:label="@string/app_name"
android:priority="50">
android:mimeType="application/vnd.bloom"
android:scheme="content" />
android:mimeType="application/bloom"
android:scheme="content" />
android:mimeType="application/vnd.bloomd"
android:scheme="content" />
android:mimeType="application/bloomd"
android:scheme="content" />
android:mimeType="application/vnd.bloombundle"
android:scheme="content" />
android:mimeType="application/bloombundle"
android:scheme="content" />
android:mimeType="application/octet-stream"
android:scheme="content" />
android:icon="@drawable/book"
android:label="@string/app_name"
android:priority="50">
android:icon="@drawable/book"
android:label="@string/app_name"
android:priority="50">
解决方法:
我现在有一个适用于包括三星在内的几个常见文件管理器的解决方案.您需要的是一个指定MIME类型的过滤器,以及一个不指定MIME类型的单独过滤器和基于文件扩展名的过滤器.我添加了一个使用通配符MIME类型和基于文件扩展名的过滤器,因为至少有一个文件管理器似乎指定了一个空的MIME类型.
解:
android:icon="@drawable/book"
android:label="@string/app_name">
android:icon="@drawable/book"
android:label="@string/app_name">
android:icon="@drawable/book"
android:label="@string/app_name">
编辑:
上面的解决方案将无法匹配bloomd之前路径中具有b的文件.有关为何以及如何克服这些问题的详细信息,请参见this answer.
标签:android
来源: https://codeday.me/bug/20191007/1869362.html