手机开发指南 > Android > Intent


インテント

基本カテゴリの説明

  インテントで投げる情報には、4つの基本カテゴリがあり

 ACTION  実行する動作を記述する 
 CATEGORY  カテゴリによる絞込みを実施 
 DATA  URI情報を付加 
 TYPE MimeType情報を付加 



Ⅰ.アクション

    実行する動作を記述する

コンスタントアクション
ACTION_CALL通話を開始する。
ACTION_EDITユーザ編集のデータを表示する。
ACTION_MAINデータ入力なしかつ出力の返却なしで、タスクの初期アクティビティとして開始する。
ACTION_SYNCモバイルデバイス上のデータを使ってサーバのデータを同期化する。
ACTION_PICKデータを取得する
ACTION_CHOOSERユーザーに Activity を選択させるための画面を表示する。
ACTION_GET_CONTENTデータ内から一つ選択てし、その選択情報を示して返す。
ACTION_DIAL電話をかける画面を表示する。
ACTION_CALL電話をかける
ACTION_SENDいわゆる”共有”の動作
ACTION_SENDTOメール送信連携。TO、Subject、Text指定可
ACTION_ANSWER電話を受信する
ACTION_INSERTアイテム追加
ACTION_DELETEデータを削除
ACTION_RUNデータの実行
ACTION_SYNCデータの同期
ACTION_PICK_ACTIVITYIntentから一つActivityを選択して、そのクラスを返す。
ACTION_SEARCHローカル内を検索
ACTION_WEB_SEARCHWeb検索
ACTION_FACTORY_TEST工場出荷テストを実行



Ⅱ.カテゴリ

    カテゴリによる絞込みを実施する

カテゴリ意味
CATEGORY_BROWSABLE リンクで参照されているデータを呼び出すことができるアクティビティ。
例えば、ブラウザで特定のURLをクリックしたら別アプリが起動することが可能
CATEGORY_GADGETガジェットのホストになっている別のアクティビティを内部に組込み可能なアクティビティ。
CATEGORY_HOME ホームスクリーンを表示するアクティビティで、最初の画面が見えるのはデバイスがオンになったとき、
またはHOME キーが押されたとき。
CATEGORY_LAUNCHERアプリケーションランチャーにリストされるアクティビティ。(タスクの初期アクティビティになれる)
CATEGORY_PREFERENCEプリファレンスパネルがターゲットのアクティビティ。


    参考: Think IT - 第4回:Androidの重要な機能、インテント

    Sampleソース付き
    参考: 日本Androidの会 - インテントを発行してみよう


Ⅲ.データ


Ⅳ.タイプ


Intentで値を引き渡す方法 (拡張インテント)

  -IntentクラスのputExtra()を使用し、様々な引き渡したい情報を付加させる
  -putExtra()には2つの引数を渡す。一つはキー。一つは渡したい内容。
  -真偽値、数値、文字列、配列。様々な内容を添付可能
  

String型getStringExtra()
boolean型getBooleanExtra()
int型getIntExtra()

  

  参考: mucchinのAndroid戦記

呼び元でIntentの戻り値を受ける方法

  呼び出し時にstartActivityではなく、
  呼び出し時にstartActivityForResultを用いる
  結果は、onActivityResult()を用意して、取得する

様々なIntent連携

  参考 :  「コードを貼り付けながら。」さんのページ - Intent(インテント)連携をまとめてみる
  参考 : んぱかさんのページ



明示的なインテントと暗黙的なインテント

  • 明示的インテント : アクティビティを直接指定起動
  • 暗黙的インテント : インテントのパラメータ起動。ゆるい連携。

明示的インテント

   コンストラクタIntentやsetComponentなどによって明示的に指定。相手先が明確。

   Intent intent = new Intent(this, xxx.xxx.xxx.class); //xxxにはパッケージのパスが入る
   startActivity(intent);

暗黙的インテント

  jpegを送信するアクティビティを起動
   Intent intent = new Intent();
   intent.setAction(Intent.ACTION_SEND);
   intent.setType("image/jpeg");
   intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("jpegファイルの場所"));
   startActivity(intent);



ブロードキャストレシーバ

  ブロードキャストの連絡を受信してそれに対処するだけのコンポーネント
  http://www.taosoftware.co.jp/blog/2009/03/alarmmanager_5.html

  ブロードキャストの多くが元々はシステム コード。以下のようなモノを検知する。
    ・時刻が変更された
    ・端末が起動された
    ・アプリのインストール
    ・バッテリー残量低下
    ・ユーザーが言語設定を変更
    ・写真が撮影された
    ・タイム ゾーンが変更された

ACTION_BATTERY_LOWバッテリー残量が少ないときの警告。
ACTION_HEADSET_PLUGヘッドセットがデバイスに取り付けられた、またはそこから取り外された。
ACTION_SCREEN_ONスクリーンが ON になった。
ACTION_TIMEZONE_CHANGEDタイムゾーンの設定が変更された。


インテントレシーバ

  外部のイベントに反応するアプリを作成したい時に使用。

  http://toru.tea-nifty.com/toru204e/2009/12/post-a4e3.html


インテントフィルタ

 インテントフィルタは、2方法ある
  ・プログラム内にIntent Filter クラスを使って直接記述
  ・マニフェストファイル内に intent-filterタグで記述 (一般的)

  priority
  action
  category
  type
  scheme
  authority
  path

  

コード内で作成して登録したブロードキャストレシーバの場合、インテントフィルタは、Intent Filter オブジェクトとして直接インスタンス化される。それ以外のっ全てのフィルタは、マニフェストで設定する

  参考 りょーぺいさんのHP - インテントフィルタのまとめ

  http://www.techdoctranslator.com/android/practices/ui_guidelines/activity_task_design


サービス

  サービスもインテントで起動可能

adb から インテントを飛ばす。

am start -a android.intent.action.VIEW -d http://localhost/test.jpeg
am start -a android.intent.action.VIEW -d http://abcde.com/test.gif



   着信音選択のインテント

Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);


コマンドラインからインテント

   コマンドラインからインテント



   戻る

     




Front page   Edit Unfreeze Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes