インテントで投げる情報には、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_ACTIVITY | Intentから一つActivityを選択して、そのクラスを返す。 |
ACTION_SEARCH | ローカル内を検索 |
ACTION_WEB_SEARCH | Web検索 |
ACTION_FACTORY_TEST | 工場出荷テストを実行 |
カテゴリによる絞込みを実施する
カテゴリ | 意味 |
---|---|
CATEGORY_BROWSABLE | リンクで参照されているデータを呼び出すことができるアクティビティ。 例えば、ブラウザで特定のURLをクリックしたら別アプリが起動することが可能 |
CATEGORY_GADGET | ガジェットのホストになっている別のアクティビティを内部に組込み可能なアクティビティ。 |
CATEGORY_HOME | ホームスクリーンを表示するアクティビティで、最初の画面が見えるのはデバイスがオンになったとき、 またはHOME キーが押されたとき。 |
CATEGORY_LAUNCHER | アプリケーションランチャーにリストされるアクティビティ。(タスクの初期アクティビティになれる) |
CATEGORY_PREFERENCE | プリファレンスパネルがターゲットのアクティビティ。 |
参考: Think IT - 第4回:Androidの重要な機能、インテント
Sampleソース付き
参考: 日本Androidの会 - インテントを発行してみよう
-IntentクラスのputExtra()を使用し、様々な引き渡したい情報を付加させる
-putExtra()には2つの引数を渡す。一つはキー。一つは渡したい内容。
-真偽値、数値、文字列、配列。様々な内容を添付可能
String型 | getStringExtra() |
boolean型 | getBooleanExtra() |
int型 | getIntExtra() |
呼び出し時にstartActivityではなく、
呼び出し時にstartActivityForResultを用いる
結果は、onActivityResult()を用意して、取得する
参考 : 「コードを貼り付けながら。」さんのページ - 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 オブジェクトとして直接インスタンス化される。それ以外のっ全てのフィルタは、マニフェストで設定する
http://www.techdoctranslator.com/android/practices/ui_guidelines/activity_task_design
サービスもインテントで起動可能
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);