搜尋

首頁  >  問答  >  主體

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

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

巴扎黑巴扎黑2867 天前756

全部回覆(1)我來回復

  • PHP中文网

    PHP中文网2017-04-17 11:34:31

    當元件管理服務,在收到請求元件的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開發精要》第四章第二節。

    回覆
    0
  • 取消回覆