2011-09-09 16 views
21

誰かが私にIntentの目的を説明してもらえますか?いつ私は自分自身を作るべきですか?私の本の中のIntentカテゴリについて書かれた唯一のものは、彼らが意図をグループ化できるということですか?インテントカテゴリの目的は何ですか?

+0

offTopic:androidのインテントカテゴリに従ってアプリケーションのカテゴリを分類できますか –

答えて

33

カテゴリは役に立たず、"implicit intent"の可能なターゲットをintent-filterに記述するために使用されます。

起動するクラス/アクティビティがわかっていて、startActivity()またはstartActivityForResult()を使用している場合は、「明示的なインテント」と呼ばれます。

は、ここで暗黙の意図がどのように働くかについての類推だ:

は大きな部屋に座って何もしないすべてのアプリケーションを想像してみてください。 次に、別のアプリケーション(Dropbox)に PDFファイルを開く必要があるとします。 Dropboxアプリはシステムに行き、「ねえ、誰か はこのPDFファイルを開く必要があります...」(これは暗黙のインテントを送信しています)。

システムは今部屋に行き、「あなたのうちのどれが にPDFファイルを表示できますか?」という叫び声をします。起きる可能性のあるアプリケーションと システムでは、これらのアプリケーションが表示されます(これらのアプリケーションには、一致するカテゴリ のカテゴリがあります)。あなたのアプリケーションの外で、あなたの活動/ BroadcastReceivers /サービスの一部が利用できるようにしたい場合はComplete action using


:それは、その後、あなたが アプリケーションのいずれかを選択できるダイアログを提供しています

Android Manifestを使用して "インテントフィルタ"を宣言することができます。そのため、システムまたはアプリが一致する「暗黙のインテント」を起動すると開きます。

あなたはランチャーから開くべき活動のために(たとえば)次の操作を行います。

<activity android:name=".SomeActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

これはアンドロイドランチャー(CATEGORY_LAUNCHER)によってトリガACTION_MAIN -actionに耳を傾けます。

あなたの「インテントフィルタ」の2つの子要素があります。

  1. actionを。これは、 "インテントフィルタ"がどのような動作をするかを指定します。
  2. 1つまたは複数category s。これは、アクティビティが呼び出される方法を指定します。 が呼び出されます。フルスクリーンモードで正常に起動するアクティビティを告げる
  3. category Sの一つは、(例えば)であることができる
android.intent.category.DEFAULT

、。 android.intent.category.TAB - たとえば、このアクティビティはTabActivityのタブとして宣言されているため、タブとしてのみ開くことができます。

もう1つの例は、android.intent.category.PREFERENCE -categoryを追加することです。これは、アクティビティを設定 - アクティビティとして宣言します。


自分でcategoryを宣言することも可能でもなくてもかまいません。

これらのイベントはSystem/Another Appによってトリガーされ、トリガーされたときに反応するかどうかを指定することしかできないことを理解する必要があります。

+0

URIデータスキーム/ホストパターンに基づいてインテントと一致させるために必要なCATEGORY_DEFAULTについて言及していません。 –

関連する問題