IntentFilterの取得方法

776 views
Skip to first unread message

藤本健太

unread,
Jul 15, 2011, 4:03:24 AM7/15/11
to android-g...@googlegroups.com

皆様、はじめまして
藤本健太と申します。

いつも、参考にさせてもらっております。

今回、IntentFilterの取得方法についてご質問します。
通常、こいつはManifest.xmlで定義されているものだと思います。

逆に、PackageInfoやActivityInfoなどを用いて、自身や別アプリのIntentFilter を取得する方法はありますでしょうか?

PackageManagerからResolveInfoを取得する方法も試しましたが、intentを明示的に渡さないと駄目で、しかも、肝心のIntentFilter がnullだったりと散々でした。

どなたか解法を持っている方がいましたらご教授のほど、よろしくお願い致します。

yoshiyuki kanno

unread,
Jul 15, 2011, 7:23:38 AM7/15/11
to android-g...@googlegroups.com
菅野です。

興味がある部分だったのでソース(2.3)を追ってみたのですが、
残念ながらManifestファイルのパーサで読み取ってはいるのですが、
結果的にはばっさり捨てています。(見落としがあるかもしれないので、最終的にはご自身で確認されるのが良いと思います)

filterはIntentの概念に基づいて、ActivityやServiceを取捨選択する時のみに存在すれば良い、
という考え方に基づいた実装だと思われます。

#ActivityInfoやPackageInfoはParcelableなので、リソース効率的にfilterに関する情報は持ちたくないのでしょうね

ただ、個人的には別途filterに関する情報を取得するインタフェースはあっても良いのではないか?と感じました。

2011年7月15日17:03 藤本健太 <fujimoto....@gmail.com>:
--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。

藤本健太

unread,
Jul 15, 2011, 7:43:54 AM7/15/11
to android-g...@googlegroups.com
菅野様

藤本です。
ご回答ありがとうございます。

Manifestファイルの読み込み処理部分をソースで追うことは考えてませんでした。
確認してみます。ありがとうございます。

仮に本当にばっさり捨てているとしたら、
暗黙的インテントの処理をどのようにやっているか不思議です。
普通に考えてインストールされているアプリに該当フィルターが無いか
検査しているのでは無いかなと思うのですが、、、
この点も合わせて調べてみようと思います。

以上です。ありがとうございました。

2011年7月15日20:23 yoshiyuki kanno <neko...@gmail.com>:

yoshiyuki kanno

unread,
Jul 15, 2011, 9:07:52 AM7/15/11
to android-g...@googlegroups.com
菅野です。

> 仮に本当にばっさり捨てているとしたら、
> 暗黙的インテントの処理をどのようにやっているか不思議です。
> 普通に考えてインストールされているアプリに該当フィルターが無いか
> 検査しているのでは無いかなと思うのですが、、、
> この点も合わせて調べてみようと思います。

この時はもちろん確認しています。
パッケージマネージャの「queryIntent*」メソッドの延長では確認しています。

なのでSQL的にいうと

select a.intentFilter from Activity a where packagename = $1

は出来ないけど

select * from Activity a where action = $1 and category = $2 and
data.schema = $3

は出来るという感じです。

11/07/15 藤本健太 <fujimoto....@gmail.com>:

藤本健太

unread,
Jul 15, 2011, 9:37:02 AM7/15/11
to android-g...@googlegroups.com
菅野様

藤本です。
度々すみません。

>select a.intentFilter from Activity a where packagename = $1
>は出来ないけど
>select * from Activity a where action = $1 and category = $2 and data.schema = $3
>は出来るという感じです。

なるほど!よく分かりました。
となると、今後のバージョン以降でFilter情報を取得するメソッドが追加されるのを待つか、
スマートではありませんが、登録されている全Filterを総当りに調べていくしかなさそうですね。
大人しく待つことにします。(笑

2011年7月15日22:07 yoshiyuki kanno <neko...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages