第三课 IntentFilter的匹配规则

<intent-filter>
    <action android:name="com.syy.note.a"/>
    <action android:name="com.syy.note.b"/>
    <category android:name="com.syy.category.c"/>
    <category android:name="com.syy.category.d"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="text/plain"/>
</intent-filter>

action

匹配规则:必须有,且必须和filter中action属性的一个匹配。

category

匹配规则:

可以没有,没有时则匹配"android.intent.catetory.DEFAULT",因此配置<intent-filter>时category属性中必须有"android.intent.catetory.DEFAULT";

如果有,则必须和filter中catetory属性的一个匹配。

data

匹配规则:必须有,且必须和filter中data属性匹配,data语法如下:

<data android:scheme="string"
    android:host="string"
    android:port="string"
    android:path="string"
    android:pathPattern="string"
    android:pathPrefix="string"
    android:mimeType="string"  />

data由mimeType和URI两部分组成,mimeType指媒体类型,比如image/jpeg、vidio/*等,URI结构:

<scheme>://<host>:<port>/[<path>|<pathPrefix>|<pathPattern>]

通过setDataAndType方法为intent指定data:

intent.setDataAndType(Uri.parse("file://abc"),"image/png");

综上所述

我们可以为文章开头的intent-filter给出匹配它的Intent:

Intent intent = new Intent("com.syy.note.a");
intent.addCategory("com.syy.category.c");
intent.setDataAndType(Uri.parse("file://abc"),"text/plain");
startActivity(intent);

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值