MobileApp > Android? > Intent


工事中


インテント

launchMode 属性

 アクティビティの起動方法には4つの属性有り.
  -> Activity項目に移動の予定

  "standard"(デフォルト モード)
  "singleTop"
  "singleTask"    ひとつのタスクのみしか開始できません
  "singleInstance"  ひとつのタスクのみしか開始できません

  FLAG_ACTIVITY_NEW_TASK
  FLAG_ACTIVITY_CLEAR_TOP
  FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
  FLAG_ACTIVITY_SINGLE_TOP

  参考:Y.A.M の 雑記帳さん


インテントの引き出しメモ

Intent入門

  インテントに付ける情報の、基本的なカテゴリとして以下4つがあり


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




コンスタントターゲットコンポーネントアクション
ACTION_CALLアクティビティ通話を開始する。
ACTION_EDITアクティビティユーザ編集のデータを表示する。
ACTION_MAINアクティビティデータ入力なしかつ出力の返却なしで、タスクの初期アクティビティとして開始する。
ACTION_SYNCアクティビティモバイルデバイス上のデータを使ってサーバのデータを同期化する。
ACTION_BATTERY_LOWブロードキャストレシーババッテリー残量が少ないときの警告。
ACTION_HEADSET_PLUGブロードキャストレシーバヘッドセットがデバイスに取り付けられた、またはそこから取り外された。
ACTION_SCREEN_ONブロードキャストレシーバスクリーンが ON になった。
ACTION_TIMEZONE_CHANGEDブロードキャストレシーバタイムゾーンの設定が変更された。



コンスタント意味
CATEGORY_BROWSABLEリンクで参照されているデータを表示するためにブラウザにより安全に呼び出すことができるターゲットアクティビティ。例えば、イメージまたは e-mail メッセージ。
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(インテント)連携をまとめてみる
  参考 : んぱかさんのページ





  MAIN_ACTION
  VIEW_ACTION
  EDIT_ACTION
  DELETE_ACTION
  DEFAULT_ACTION
  PICK_ACTION
  GET_CONTENT_ACTION
  RUN_ACTION
  INSERT_ACTION
  CALL_ACTION
  DIAL_ACTION
  SENDTO_ACTION
  ANSWER_ACTION


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

明示的インテント

   コンストラクタ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

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

インテントレシーバ

  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   New List of pages Search Recent changes   Help   RSS of recent changes