本文主要是介绍Intent与IntentFilter匹配规则,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、匹配规则
1.action规则:
IntentFilter中可有1~N个action属性;必有一个。
Intent中有1个action属性,且Intent中action需与IntentFilter中任意一个匹配。
IntentFilterAction(1~N个) >= IntentAction(1个)
2.data规则
data由Type和URL两部分组成,全相同才匹配。
IntentFilter中可有0~N个data属性;可没有。
Intent中有0~1个data属性,如IntentFilter有data则Intent中必有,且Intent中data需与IntentFilter中任意一个匹配。
IntentFilterData(0~N个) >= IntentData(0~1个) 且IntentFilter有data则Intent中必有
3.category规则
IntentFilter中可有1~N个category属性;必有一个"android.intent.category.DEFAULT"。
Intent中有0~N个category属性,默认的category无需添加(自带),且Intent中category需全为IntentFilter中有的。
IntentFilterCategory(1~N个) >= IntentCategory(0~N个)
二、隐式启动
如果想使外部程序可隐式启动该Activity需将exported属性设为true。
<activityandroid:name=".MainActivity"android:exported="true"></activity>
三、Intent中添加属性
1.添加action,data,category属性
Intent intent=new Intent();
//活动
intent.setAction(" ~ ");
//数据及类型
intent.setDataAndType( url , "type" );
//分类;默认category无需添加
intent.addCategory(" ~ ");//跳转
startActivity( intent );
2.获取Intent中data属性的信息
Intent intent=getIntent();
URL url=intent.getData();
四、IntentFilter中添加属性
<activityandroid:name=".MainActivity"android:exported="true">
<!-- 设置android:exported="true"使其他程序可以隐式启动该Activity !--><intent-filter><action android:name="android.intent.action.MAIN" /><data android:mimeType=" " android:scheme=" "/><category android:name="android.intent.category.DEFAULT" />
<!-- 必需添加默认的category属性"android.intent.category.LAUNCHER" !--></intent-filter>
</activity>
这篇关于Intent与IntentFilter匹配规则的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!