本篇文章主要介绍了"cherry filter 你必须弄懂的Intent Filter匹配规则",主要涉及到cherry filter方面的内容,对于移动开发感兴趣的同学可以参考一下:
Intent简介 Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行...
<data android:scheme="String.“
android:host="String"
android:port="String"
android:path="String"
android:pathPattern="String"
android:pathPrefix="String"
android:mimeType="String"/>
其中scheme、host等各个部分无需全部指定。
使用案例:
(1)如果我们想要匹配 http 以 “.pdf” 结尾的路径,使得别的程序想要打开网络 pdf 时,用户能够可以选择我们的程序进行下载查看。
我们可以将 scheme 设置为 “http”,pathPattern 设置为 “.*//.pdf”,整个 intent-filter 设置为:
<intent-filter><actionandroid:name="android.intent.action.VIEW">action><categoryandroid:name="android.intent.category.DEFAULT">category><dataandroid:scheme="http"android:pathPattern=".*//.pdf">data>intent-filter>
如果你只想处理某个站点的 pdf,那么在 data 标签里增加 android:host=”yoursite.com” 则只会匹配 http://yoursite.com/xxx/xxx.pdf,但这不会匹配 www.yoursite.com,如果你也想匹配这个站点的话,你就需要再添加一个 data 标签,除了 android:host 改为 “www.yoursite.com” 其他都一样。
(2)如果我们做的是一个IM应用,或是其他类似于微博之类的应用,如何让别人通过 Intent 进行调用出现在选择框里呢?我们只用注册 android.intent.action.SEND 与 mimeType 为 “text/plain” 或 “/” 就可以了,整个 intent-filter 设置为:
<intent-filter><actionandroid:name="android.intent.action.SEND" /><categoryandroid:name="android.intent.category.DEFAULT" /><datamimeType="*/*" />intent-filter>
这里设置 category 的原因是,创建的 Intent 的实例默认 category 就包含了 Intent.CATEGORY_DEFAULT ,google 这样做的原因是为了让这个 Intent 始终有一个 category。

(3)如果我们做的是一个音乐播放软件,当文件浏览器打开某音乐文件的时候,使我们的应用能够出现在选择框里?这类似于文件关联了,其实做起来跟上面一样,也很简单,我们只用注册 android.intent.action.VIEW 与 mimeType 为 “audio/*” 就可以了,整个 intent-filter 设置为: