android - 请问和某个intent匹配的程序列表的排序先后有什么依据?能改变吗?
巴扎黑
巴扎黑 2017-04-17 11:32:31
0
1
701

请问和某个intent匹配的程序列表的排序先后有什么依据?能改变吗?

巴扎黑
巴扎黑

全部回覆(1)
洪涛

當元件管理服務,在收到請求元件的Intent(設為intentA)後,先查看intentA物件是包含了Component訊息,如果有,無須符合。
如果沒有,則會從應用程式管理服務中取得所有元件的Intent Filter訊息,並與intentA目標進行比較。

比較的演算法如下:

1)比較Action,如果intentA未包含Action,或系統所有的Inent Filter沒有符合的Action,請前往2);

2)比較Data和Type
2-1)如果intentA中無Data或Type項,那麼Intent Filter中也不能有,否則匹配失敗;
2-2)如果intentA包含Type,則必須Intent Filter的Type與之對應(可使用通配符比較),否則比配失敗;
2-3)如果intentA包含Data,則會將Data的URI資訊拆分成Scheme和Authority等部分,逐一與Intent Filter物件中的對應部分進行比較,兩者必須完全相等,方可匹配成功。
如果1)和2)都匹配成功,則進入3)

3)符合Category,如果intentA無Category,則成功;否則,必須要求intentA中包含的所有Category都出現在對應Intent Filter的Category中,不然則符合失敗,即僅當intntA物件的Category項是Intent Filter物件Catetory項目集合子集時,符合才能成功。

詳情請參考《Android開發精要》第四章第二節。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板