tasker_icon

日本語版 Tasker ユーザーガイド : Intents

~ インテント ~

インテントとは、Android上で動くアプリケーションが外部に情報を伝える仕組みです。

Intents (インテント)

インテントはAndroidでアプリ同士が連絡を取り、データを共有するための主な手段です。

インテントは上級ユーザー向けの機能です。ここでは、インテントがどの様に機能するかを説明していますが、だからといって気軽に使えるということではありません。

Sending Intents (インテントの送信)

インテントに関する情報と、Andoroidの組み込みインテントの詳細は、Android SDK解説ページ

Taskerでは、 ‘Misc’ カテゴリーにある ‘Send Intent’ (インテントの送信)アクションを使って、任意のインテントを送信することが出来ます。これにより、他のアプリがどの様な形式のインテントを受け取るかが判っていれば、そのアプリの振る舞いに影響を与えることが出来ます。

※Send Intent アクションは実際には System カテゴリーにあります。

Send Intent Parameters (インテントの送信アクションのパラメーター)

‘Extra’ オプションを除く全てのパラメーターは、インテントの受信側が受信できるものだけがパラメーターのセットとして纏められる点に注意してください。

Action (アクション)オプション

インテントの送信側が送信したデータを受信側がどの様に扱えば良いのかを指定します。What the sender would like the receiver to do with the data.

【例】 android.intent.action.VIEW

Cat (カテゴリー)オプション

アクションに関する追加的な情報です。

Mime-Type (マイムタイプ)オプション

開発者向けの解説によれば、「これは通常、タイプのみを指定しデータを持たないインテントを作成します。例えば、返すべきデータのタイプを指定するような場合です。」

データの指定と同時に指定することはできませんん。

Data (データ)オプション

URIの形で指定されるデータです。

マイムタイプの指定と同時に指定することはできません。

Extras (追加データ)オプション

インテントに付属して送信できる追加データです。

追加データは、コロンでキーと値を区切って一つだけ指定します。指定された値が、整数、長整数(整数の後に ‘L’ を付ける)、浮動小数点数、倍精度浮動小数点数(浮動小数点数の後に ‘D’ を付ける)、または真偽値として解釈可能な場合は、それぞれの型の値として扱われ、それ以外は文字列として扱われます。

【例】 have_flowers:true

【例】 (これは整数値として解釈されます。)this.is.an.integer.example:34

Package, Class (パッケージ、クラス)オプション

送信先を特定のパッケージまたはクラスに絞りたい場合に指定します。

Target (ターゲット)オプション

インテントを送信するAndroidコンポーネントのタイプを指定します。

Finding App Intents (アプリのインテントの見つけ方)

アプリが受信する多くのインテントはそのパッケージのマニフェスト(AndroidManifest.xmlと呼ばれています。)の中で定義されています。その詳細を知るには、Android SDKに含まれるaaptツールを使って次のようにします。

aapt dump xmltree example.apk AndroidManifest.xml

‘Intent Filter’ 要素を探してください。

アプリの実行中に動的に変化する受信可能なインテントを特定するのは容易ではありません。

Receiving Intents (インテントの受信)

Taskerでは、‘System’ カテゴリーの ‘Intent Received’ イベントを使って、アプリまたはシステムから送られる多くのインテントを受信することが出来ます。

あなたが作成したそれぞれのイベントに対して、Taskerは一致するIntent Filterオブジェクトを作成します。

Limitations (制限事項)
  • Taskerは、‘broadcast receiver’(ブロードキャストレシーバー)クラスに対して発信されたインテントのみを受信します。‘activities’(アクティビティ)クラスや ‘services’(サービス)クラスに対して発信されたインテントは受信しません。
  • インテントの発信元によっては、一致する ‘intent filter’(インテントフィルター)が静的に(即ち、Android Manifest 内で)指定されていなければならないとするものもありますが、そのようなインテントは受信しません。
  • 特定のパッケージコンポーネント向けのインテントは受信できません。
Send Intent Parameters (インテントの送信アクションのパラメーター)

(※Intent Received Parametersの間違いだと思われます。)

Action (アクション)オプション

受信するインテントにここで指定したアクションが指定されている必要があります。

Cat (カテゴリー)オプション

受信するインテントに指定されているのと同様のカテゴリーが、インテントの受信イベントでも指定されている必要があります。インテントの発信アクションでカテゴリーを指定するのとは論理的には異なる点に注意してください。

Scheme (スキーム)オプション

フィルターにいくつかのスキームが含まれる場合、インテントのデータはそれらスキームのうちのいずれかに該当するか、データタイプにマッチする必要があります。スキームが含まれない場合には、データを持たないインテントのみがマッチします。

Mime Type (マイムタイプ)オプション

このオプションが指定されている場合、インテントのデータがこれに一致するかまたはスキームパラメーターが一致している必要があります。マイムタイプが指定されていない場合、データを持たないインテントのみが一致するものとみなされます。

Priority (優先度)オプション

発信されたインテントが ‘ordered broadcast’(順序のある発信)であった場合、ここで指定した優先度によって、このイベントが他の受信者よりも先に受信するかどうかが決まります。

Stop Event (イベントの停止)オプション

発信されたインテントが ‘ordered broadcast’(順序のある発信)であった場合、イベントの停止オプションが指定されていると、それ以降の受信者にインテントが届けられるのを防ぎます。

Accessing Intent Data (インテントのデータを利用する)

インテントの発信によってインテントの受信イベントがアクティブになると、その結果として実行されたタスクでは関連するローカル変数を介して、インテントの様々な情報を得ることが出来ます。

%intent_data
インテントのデータです。
%evtprm1
インテントのアクションです。
%evtprm2
第一カテゴリーです。
%evtprm3
第二カテゴリーです。
%evtprm4
URIスキームです。
%evtprm5
マイムタイプです。

この他、インテントに追加データがある場合、これらはいかの要件に従って変数名として適合したものに変換されたデータ名をもつ変数からアクセス可能です。

  • まず、全ての文字が小文字に変換されます。
  • 次に、数値または文字として扱えない文字は ‘‗’(アンダーバー)に変換されます。
  • さらに、先頭の文字が数字の場合プレフィックスとして ‘a’ が付加されます。
  • 最後に、変数名が文字または数字以外で終わっている場合、最後に ‘a’ が付加されます。

例として %SOUND_ON というキーで指定されたデータは、%sound_on という変数に格納されます。キーが package.SOUND_ON! だった場合は、 %package_sound_on_a という変数名になります。

次のようなタイプのデータの場合、Taskerの変数配列に格納されます。

String [], Integer [], ArrayList<String>, ArrayList<Integer>

【例】 データが文字列の配列だった場合: ‘fruits’ という名前の配列に ‘pear’ と ‘apple’ という文字列が格納されているとすると、それぞれ %fruits1 (=pear) と %fruits2 (=apple) という変数配列の要素として値が格納されます。