以下內(nèi)容整理自互聯(lián)網(wǎng),僅用于個(gè)人學(xué)習(xí)
只有當(dāng)action類別、category類別和data類別同時(shí)匹配,才能成功啟動(dòng)Activity。另外,一個(gè)Activity可用有多個(gè)intent-filter,一個(gè)Intent只要能匹配任何一組intent-filter即可成功啟動(dòng)對(duì)應(yīng)的Activity。
匹配過程:
- 加載所有的Intent Filter列表
- 去掉action匹配失敗的Intent Filter
- 去掉url匹配失敗的Intent Filter
- 去掉Category匹配失敗的Intent Filter
- 判斷剩下的Intent Filter數(shù)目是否為0。如果為0查找失敗返回異常;如果大于0,就按優(yōu)先級(jí)排序,返回最高優(yōu)先級(jí)的Intent Filter
action匹配規(guī)則
至少要有一個(gè)action與之相同。
category匹配規(guī)則
必須為其子集。
注意,系統(tǒng)在調(diào)用startActivity或startActivityForResult的時(shí)候,會(huì)默認(rèn)給Intent加上“android.intent.category.DEFAULT”這個(gè)category,所以,為了我們的Activity能接收隱式調(diào)用,必須在intent-filter中加“android.intent.category.DEFAULT”這個(gè)category。
data匹配規(guī)則
至少有一個(gè)data與之相同。