2013/03/17

[android]IntentFilterのマッチング(注:2年半前)

2年半くらい前に作っていた、AndroidのIntentFilterマッチング処理の資料が出てきた。
もったいないので、置いておく(astah* communityで作成)。
https://sites.google.com/site/hiro99ma/home/files/other/intent-filter.asta?attredirects=0&d=1

さて・・・2年半前って、OSのバージョンは何だったんだろうね。


IntentFilter.match()は、おおざっぱに書くと、こうだ。

if (action文字列がnullではない) {
  if (action文字列が一致しない) {
    return アクション不一致;
  }
}
dataMatch = dataマッチング(type, scheme, data);
if (マッチングしない) {
  return マッチングしない;
}
categoryMatch = categoryマッチング(categories);
if (マッチングしない) {
  return categoryがマッチングしない;
}
return dataMatch;

typeは、Intent.resolveType()だということだ。

IntentFilterの書き方がわからなくて調べたんだったと思う。
今だと簡単に説明しているサイトがありそうだなあ。

  • <intent-filter>の比較は、<intent-filter>ごとに行われる。
  • actionのみのintentを受け付けるのであれば、同じ<intent-filter>にまとめてよい
  • actionとschemeがあるintentを受け付けるのであれば、同じ<intent-filter>にまとめてよい
  • categoryを含む場合は完全一致となるので、同じ<intent-filter>にするかどうかには注意すべし

と自分では思っているが、そんなにintent-filter自体を書いたことがないので、あやしいかも。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。