※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

EXTRA定義

サポテキ有料版の機能としてデバッグモード時にエキストラ定義が使えるようになりました。(仕様が変わる可能性あり)
この定義によってサポテキで発行するインテントをユーザー側が直接設定することができます。

使用するタグ

インテントの基本情報
[ACTION] new Intent
[CATEGORY] intent.addCategory
[FLAG] intent.setFlags
※数値で指定
[URI] intent.setData
[TYPE] intent.setType
インテントを明示的にする
[COMPONENT_PACKAGE] intent.setClassName パッケージ名
[COMPONENT_CLASS] intent.setClassName クラス名
インテントにデータを持たせる
[EXTRA_KEY] Intent.putExtra 送信するデータの名前
[EXTRA_STRING][EXTRA_BOOLEAN]
[EXTRA_BYTE]
[EXTRA_INTEGER]
[EXTRA_LONG]
[EXTRA_FLOAT]
[EXTRA_STRING_ARRAY]
[EXTRA_BOOLEAN_ARRAY]
[EXTRA_BYTE_ARRAY]
[EXTRA_INTEGER_ARRAY]
[EXTRA_LONG_ARRAY]
[EXTRA_FLOAT_ARRAY]
Intent.putExtra 送信するデータの中身
※ブラケット("[")を使う場合は("[[")とする
[STRING_ARRAY_SEPALATOR] EXTRA_STRING_ARRAYとEXTRA_BYTE_ARRAYの区切り?

アプリの起動(例として2chMate)

定義ボタン押すと2chMateが起動する
[ACTION]
android.intent.action.MAIN
[CATEGORY]
android.intent.category.LAUNCHER
[FLAG]
270532608
[COMPONENT_PACKAGE]
jp.co.airfront.android.a2chMate
[COMPONENT_CLASS]
jp.syoboi.a2chMate.activity.HomeActivity
[END]
↓みたいのを↑みたく書き換えた
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
intent.setClassName("jp.co.airfront.android.a2chMate","jp.syoboi.a2chMate.activity.HomeActivity");

ダイアラー起動

サポテキで電話番号を入力して定義ボタン押すとダイアラー起動
[ACTION]
android.intent.action.CALL
[URI]
tel:%l0
[END]
↓みたいのを↑みたく書き換えた
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:%l0"));

スケジュール登録

サポテキで1行目に「件名」、2行目に「場所」を入力して定義ボタン押すとスケジュール登録画面が起動
※カレンダー周りは仕様がコロコロ変わってるらしく動作しないバージョンがあるかも?
3行目にスペース入れて起動すると終日予定の作成になる
[ACTION]
android.intent.action.EDIT
[TYPE]
vnd.android.cursor.item/event
[EXTRA_KEY]
title
[EXTRA_STRING]
%l0
[EXTRA_KEY]
eventLocation
[EXTRA_STRING]
%l1
[EXTRA_KEY]
allDay
[EXTRA_BOOLEAN]
%l2
[END]
[PATTERN]
(?s)(([^\n]*?\n){2})[  ]+?.*
[REPLACE]
$1true
[TYPE]
EXTRA
[CCODE]
NONE
[END]
↓みたいのを↑みたく書き換えた
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("title",%l0);
intent.putExtra("eventLocation",%l1);
intent.putExtra("allDay",%l2);

正規表現の置換とEXTRA定義の合わせ技

正規表現の置換でEXTRA定義を書くことで、サポテキでの入力内容を条件として発行するインテントを分岐させることができます
複数の定義を1つにまとめちゃうという裏ワザ(?)ですね
サンプルとしてはてなブックマークアプリに対する3種類のインテント発行を1つの定義にまとめる

  • サポテキの1行目
    • 未入力ならはてブアプリが起動
    • URL文字列ならはてブにブックマークを追加
    • 検索文字列ならはてブのブックマークを検索

[TITLE]
はてブ - 起動/追加/検索
[TEXT]
%s
[PATTERN]
^((?!https?://.)[^\n]+)
^(https?://[^\n]+)
^(\n+.*|)$
[REPLACE]
[ACTION]\nandroid.intent.action.SEARCH\n[EXTRA_KEY]\nquery\n[EXTRA_STRING]\n$1\n[COMPONENT_PACKAGE]\ncom.hatena.android.bookmark\n[COMPONENT_CLASS]\ncom.hatena.android.bookmark.SearchableActivity\n[END]
[ACTION]\nandroid.intent.action.SEND\n[URI]\n$1\n[COMPONENT_PACKAGE]\ncom.hatena.android.bookmark\n[COMPONENT_CLASS]\ncom.hatena.android.bookmark.PostActivity\n[END]
[ACTION]\nandroid.intent.action.MAIN\n[COMPONENT_PACKAGE]\ncom.hatena.android.bookmark\n[COMPONENT_CLASS]\ncom.hatena.android.bookmark.MyBookmarkActivity\n[END]
[TYPE]
EXTRA
[CCODE]
NONE
[END]