[Google Android] AndroidにはIntentFilterという仕組みがありますが、これは何のためにあるのでしょうか。

単なるIntentFilterの使用方法ではなく、IntentFilterの存在意義、つまりなぜグーグルはAndroidにIntentFilterという仕組みを織り込まなければならなかったのか、ということについての回答を頂きたいです。
もちろん推測で結構です。

回答の条件
  • 1人3回まで
  • 登録:2008/06/10 15:41:54
  • 終了:2008/06/17 15:45:02

回答(1件)

id:katameneko No.1

katameneko回答回数20ベストアンサー獲得回数12008/06/11 00:09:22

ポイント60pt

IntentFilterは、下記2つの機能を実現するために用いられます。


1.Intentに含まれる「何を行うか」という情報から、Intentを受け取った

  アプリが表示する画面を決定するため。


2.暗黙的インテントから、システムが起動するべきアプリを決定するため。


1については、例えばメール本文に記載されているURLのリンクから、

ブラウザアプリを起動してページを表示したい場合。


Intentに「このアドレスのページを表示する」という情報+URL情報が含まれて

ブラウザアプリに渡される。


ブラウザアプリは、IntentFilterの「このアドレスのページを表示する」

に対応した画面「Webページ表示」画面で起動し、渡されたURLにアクセスします。


同じURL指定でブラウザを起動する場合でも、やりたいことが「お気に入りに登録」

の場合もありえます。


この場合はIntentに「お気に入りに登録」+URL情報のIntentが渡され、

ブラウザはIntentFilterから「お気に入りに登録」に対応した画面が

お気に入り登録画面であることを判断し、直接お気に入り登録画面で起動することに

なります。


この仕組みがあることで、複数のアプリがスムーズに連携して一連の機能を提供

することができます。



2については、GoogleAndroidでは、ブラウザアプリやメーラアプリを

特定のものではなく、入れ替え可能なものとしています。


そうなると、たとえばブラウザでWebページを表示したいアプリが、ブラウザアプリを

明示できない場合が考えられます。


こうしたことを解決するために、アプリを判断するのに十分な情報だけを

Intentに含め、システム側でその情報をもとに起動するアプリを決定するための

仕組みが暗黙のインテントです。

システムは、起動するアプリを決定する際に各アプリのintentFilter

を参考にします。


これにより実現したい機能としては、Windowsでのデフォルトブラウザの設定など

と考えれば分かりやすいでしょうか?

※仕組みとしては、

「システムに設定する」/「各アプリが設定を持っている情報をシステムが参照する」

という違いはありますが。

id:room661

id:katameneko さん、丁寧なご回答ありがとうございます。

頂いた回答を元にして、すこし考えてみます。

2008/06/11 01:09:16

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • Android アプリにむけてその1 すごい、備忘録。 apiに接続後、それをパースするまではいった。 後は、 setContentView後にレイアウト側でループして、 表示とかそこらへんの処理を学ぶ必要あり
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません