LoginSignup
1
1

More than 5 years have passed since last update.

IntentFilter#match のコードを読んだ

Posted at

次のようになっている。

  1. Intent の action が 非null なのに、IntentFilter の actions に含まれていなければ NO MATCH
  2. データがMATCHしなければ NO MATCH。MATCHするかどうかは、
    1. IntentFilter の types と schemes が両方とも null のとき
      • Intent の type と data の両方が null ならば MATCH、
      • そうでなければ NO MATCH
    2. IntentFilter の schemes が 非null のとき
      • schemes が Intent の scheme を含まなければ NO MATCH
      • IntentFilter の mDataSchemeSpecificParts がマッチせず、
      • mDataAuthorities と mDataPaths もマッチしなければ NO MATCH
    3. IntentFilter の schemes が null のとき
      • Intent の scheme が、非null で、"" でなく、"content" でも "file" でもなければ、NO MATCH
    4. IntentFilter の types が 非null のとき
      • Intent の type が null なら NO MATCH
      • IntentFilter の types が Intent の type を含めば、MATCH
      • Intent の type が "/" なら、
        • IntentFilter の types が 非empty なら MATCH、empty なら NO MATCH
      • IntentFilter の types が "/" を含めば MATCH
      • IntentFilter の types が "hoge/*" を含んで Intent の type が "hoge/" で始まれば MATCH
      • Intent の type が "hoge/*" で、IntentFilter の types が "hoge/" で始まるものを含めば MATCH
    5. IntentFilter の types が null のとき
      • Intent の type が 非null なら NO MATCH
    6. 上記のいずれにも該当しなければ MATCH
  3. カテゴリがMATCHしなければ NO MATCH。MATCHするかどうかは、
    1. Intent の categories が null なら、MATCH
    2. IntentFilter の categories が null のとき、
      • Intent の categories が empty なら MATCH
      • そうでなければ NO MATCH
    3. Intent の categories のすべてが、IntentFilter の categories に含まれれば MATCH、そうでなければ NO MATCH
  4. いずれにも該当しなければ、MATCH
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1