IntentのCategoryとExtraとFlagの一覧表を作ってみたよ
前回までにActivityとBroadcastのActionに関する振る舞い整理してきました。
今回は定義が広い振る舞いのフィルタリング方法である Category を整理します。また、それ以外にも Intent に投げる際に情報を付加させる Extra や、Intent を投げた先で起動される Activity がどのように起動するかを指定できる Flag も整理します。
今回は特に意味不明な箇所が多く、正直Flagに関してはまったく分かりませんでした。自分でも実際に検証してみますが、何かご指摘頂けるようでしたら、お願いします。
Categories
『Actionの振る舞いを明確にするためのCategory』を指定する方法を一覧表。
これらは AndroidManifest.xml ファイル内の
定数名 | 説明 | URL |
---|---|---|
CATEGORY_DEFAULT | 標準カテゴリ*1 | ● |
CATEGORY_BROWSABLE | ブラウザから安全に起動することが可能であること | ● |
CATEGORY_HOME | 端末が起動されたとき、最初に起動されるものであること | ● |
CATEGORY_LAUNCHER | Home画面のアイコンから起動可能であること | ● |
CATEGORY_INFO | パッケージ情報が提供されていること | ● |
CATEGORY_OPENABLE | 必ずURIが受け渡されること | ● |
CATEGORY_EMBED | 活動中である親Activityであること | ● |
CATEGORY_TAB | TabActivity 内のタブであること | ● |
CATEGORY_TEST | テストとして使用されること*2 | ● |
CATEGORY_UNIT_TEST | Unitテストとして使用されること | ● |
CATEGORY_MONKEY | Monkeyというテスト自動化ツールを走らせることが可能なこと | ● |
CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST | テストされているフレームワークであること | ● |
CATEGORY_ALTERNATIVE | ユーザーが現在参照しているデータに対し、代替できる動作が可能であること | ● |
CATEGORY_SELECTED_ALTERNATIVE | ユーザーが選択したデータに対し、代替できる動作が可能であること | ● |
CATEGORY_PREFERENCE | ??? | ● |
CATEGORY_DEVELOPMENT_PREFERENCE | ??? | ● |
CATEGORY_SAMPLE_CODE | サンプルと使用するために、コード化されている必要があること*3 | ● |
Extra Data
『Intentに投げるときに渡すデータの種類を示す定数』の一覧表。
ソース内で Intent#putExtra(String, Bundle)と指定します*4。
定数名 | 説明 | URL |
---|---|---|
EXTRA_EMAIL | メールアドレス | ● |
EXTRA_CC | メールCC | ● |
EXTRA_BCC | メールのBCC | ● |
EXTRA_SUBJECT | メッセージの件名 | ● |
EXTRA_PHONE_NUMBER | ACTION_NEW_OUTGOING_CALL*5もしくはACTION_CALL*6で掛ける電話番号 | ● |
EXTRA_STREAM | ACTION_SEND*7でブロードキャストされるデータストリーム | ● |
EXTRA_TEXT | ACTION_SEND*8でブロードキャストされるテキストデータ | ● |
EXTRA_KEY_EVENT | Intentに投げるきっかけとなったKeyEvent | ● |
EXTRA_ALARM_COUNT | アラーム回数 | ● |
EXTRA_DATA_REMOVED | アンインストール対象 | ● |
EXTRA_REPLACING | ACTION_PACKAGE_REMOVED*9で削除するアプリケーションパッケージ | ● |
EXTRA_DONT_KILL_APP | 使用中のためACTION_PACKAGE_REMOVEDもしくはACTION_PACKAGE_CHANGEDに失敗 | ● |
EXTRA_INTENT | ACTION_PICK_ACTIVITY*10で選択されたActivity | ● |
EXTRA_TITLE | ACTION_CHOOSER*11で選択されるActivity | ● |
EXTRA_SHORTCUT_ICON | Iconのショートカット | ● |
EXTRA_SHORTCUT_ICON_RESOURCE | ??? | ● |
EXTRA_SHORTCUT_INTENT | Intentのショートカット | ● |
EXTRA_SHORTCUT_NAME | 名前のショートカット | ● |
EXTRA_TEMPLATE | ACTION_INSERT*12で作成されるときの初期データ | ● |
EXTRA_UID | ??? | ● |
Flags
『呼び出される側の起動する振る舞い』を指定する方法の一覧。
ソース内で setFlags(int) や addFlags(int) と指定します。
定数名 | 説明 | URL |
---|---|---|
FLAG_FROM_BACKGROUND | バックグラウンドで呼び出される | ● |
FLAG_ACTIVITY_NEW_TASK | スタックに残っていても、新しくタスクを起動させる | ● |
FLAG_ACTIVITY_MULTIPLE_TASK | FLAG_ACTIVITY_NEW_TASKと組み合わせることで、同じActivityが起動していても別Activityとして起動させる*13 | ● |
FLAG_ACTIVITY_SINGLE_TOP | スタックの先頭と同Activityの場合は新しくActivityを作られず、同Activityで無い場合は新しくActivityを生成させる | ● |
FLAG_ACTIVITY_CLEAR_TOP | 呼び出すActivity以外のActivityをクリアして起動させる | ● |
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET | 呼び出すActivityとその上にあるActivityが一旦全てクリアされる | ● |
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | スタックを全てクリアして、新しくActivityを生成させる | ● |
FLAG_ACTIVITY_NO_HISTORY | 履歴にスタックに残さず起動させる | ● |
FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY | 履歴がスタックに残っているなら、そちらを利用して起動させる | ● |
FLAG_ACTIVITY_BROUGHT_TO_FRONT | ??? | ● |
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | ??? | ● |
FLAG_ACTIVITY_FORWARD_RESULT | ??? | ● |
FLAG_ACTIVITY_NO_USER_ACTION | ??? | ● |
FLAG_ACTIVITY_PREVIOUS_IS_TOP | ??? | ● |
FLAG_ACTIVITY_REORDER_TO_FRONT | ??? | ● |
FLAG_DEBUG_LOG_RESOLUTION | ??? | ● |
FLAG_GRANT_READ_URI_PERMISSION | ??? | ● |
FLAG_GRANT_WRITE_URI_PERMISSION | ??? | ● |
FLAG_RECEIVER_REGISTERED_ONLY | ??? | ● |
まとめ
これでリファレンスに乗っている Intent 情報は一通り読んだことになります。
今回は意味不明な箇所が多かったです。それでも意味が分かった範囲で色々できると思いますし、意味不明な箇所も実際に試していく事で理解して行けると思います。
次回
次こそコーディングしていくと思います。自分の書いたエントリが読み難い場合は修正を加えたり、新しく分かりやすいエントリを書くかもしれません。
*1:他にカテゴリを指定しない場合、カテゴリ指定漏れで無いことを表すために設定するのかな?
*2:どういったテストなのかが分からない
*3:意味不明
*4:Bundleは受け渡すデータを HashMap で格納した情報
*5:[http://d.hatena.ne.jp/hyoromo/20091002/1254498107:title=Broadcast Action]を参照にしてください
*6:[http://d.hatena.ne.jp/hyoromo/20090929/1254237656:title=Activity Acition]を参照にしてください
*7:[http://d.hatena.ne.jp/hyoromo/20090929/1254237656:title=Activity Action]を参考にしてください
*8:[http://d.hatena.ne.jp/hyoromo/20090929/1254237656:title=Activity Action]を参考にしてください
*9:[http://d.hatena.ne.jp/hyoromo/20091002/1254498107:title=Broadcast Action]を参考にしてください
*10:[http://d.hatena.ne.jp/hyoromo/20090929/1254237656:title=Activity Action]を参照にしてください
*11:[http://d.hatena.ne.jp/hyoromo/20090929/1254237656:title=Activity Action]を参考にしてください
*12:[http://d.hatena.ne.jp/hyoromo/20090929/1254237656:title=Activity Action]を参考にしてください
*13:FLAG_ACTIVITY_NEW_TASKで既にそうなのでは?