Android -インテント-
インテントとは
インテントは、Androidアプリケーションのコンポーネント間で処理を受け渡しする場合に利用されます。
インテントを利用することにより、あるアクティビティから同じアプリケーションのアクティビティを呼び出すことや、 他のアプリケーションのアクティビティを呼び出すことが可能になります。
また、アクティビティ以外にもバックグラウンドで動作するサービスを呼び出すことや、 サービスからアクティビティを呼び出すこともできます。
インテントが保持する情報
アクション(action)
アクションには、アクティビティアクションとブロードキャストアクションの 2種類があります。
アクティビティアクションは、他のアクティビティやサービスを起動するために「画像を表示したい」「電話をかけたい」 など大まかな動作の指定をします。
ブロードキャストアクションは、「バッテリィが残り少ない」「システム起動完了」等、何らかの イベントが発生したことをアプリケーション全体に知らせるために指定します。
カテゴリ(category)
カテゴリは、アクションを分類するための追加情報で、アクションとセットで指定します。
データ(data)
Androidでは、IPネットワーク上で一般的によく使用される宛先を指定する為のURI表現を使って 呼び出し先を指定します。
データは、他のアクティビティやサービスを呼び出すためのURIになります。
android.net.Uriクラスを使用し、スキーム、ホスト、ポート、パス、クエリなどの情報を このクラスのオブジェクトに保持します。
付加情報(extra)
他のアクティビティやサービスに情報を引き渡したい場合に利用します。
Bandleクラスを使用し、このクラスのオブジェクト内に付加情報のキーと値のセットで 保持します。
タイプ(type)
タイプは、インテントのデータ種類をMIME形式で示した情報です。
フラグ(flag)
フラグは、例えば、「バックグラウンドで起動」、「アクティビティがすでに起動している場合、 新たに起動しない」などアクティビティの起動が特別な場合に設定します。
インテントの分類
明示的インテント
起動するアクティビティやサービスを明示的に指定したインテントです。
(動作内容として、具体的なクラス名を記述)
主に同一アプリケーション内でアクティビティやサービスを連携する場合に使用します。
暗黙的インテント
起動するアクティビティやサービスを明確に指定せず、「なにをしたいか」だけを指定するインテントです。
(動作内容だけを記述)
主に他のアプリケーションを呼び出す場合に利用します。
インテントを使用することで、他のアプリケーションをライブラリ感覚で使用できることがAndroidの特徴です。
お互いのアプリケーション機能を最大限に利用しつつ、お互いの関係は、なるべく疎結合を保つという仕組みを インテントは、提供します。
Intentクラス
Intentクラスのコンストラクタ
- Intent()
- Intent(String action)
- Intent(String action, Uri uri)
- Intent(Context packageContext, Class<?> cls)
- Intent(String action, Uri uri, Context packageContext, Class<?> cls)
※ actionはアクション種別
Intentクラスの主なメソッド
Intent | addCategory(String category) | カテゴリの追加 |
void | removeCategory(String category) | カテゴリの削除 |
Intent | setFlags(int flags) | インテントフラグの指定 |
Bundle | getExtras() | Bundleオブジェクトの取得 |
Intent | putExtra(String name, int value) | インテントへのパラメータ付加(int型) |
Intent | putExtra(String name, String value) | インテントへのパラメータ付加(String型) |