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 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。