インテント受信・インテントを送信

ページ名:インテント受信インテントを送信

This feature is for advanced users who understand the details of the intent they wish to invoke.

MacroDroid Wiki(https://macrodroidforum.com/wiki/index.php/Action:_Send_Intent)

 

Google公式ドキュメント(以下単にGoogleと表記)との表現の差や、翻訳の問題によってわかりにくいことこの上ないのにMacroDroid公式でマニュアルがなさそうなので基礎知識と合わせてまとめます。

 

インテントとは

Androidでのアプリ間で連携を取るための仕組み。「○○という動作をしてほしい」という依頼を発行するのが基本であるが、単に情報を送るだけということもできる。

 

インテントの区分

「Activity」「Broadcast」「Service」の3つがある。それぞれ使用目的があるが、実際にどう動作するかは受け手側の作りこみで決まる。

Activity

なにかの画面表示を目的とするインテント

Broadcast

情報を送るだけのインテント

Service

なにかのサービス起動を目的とするインテント

 

MacroDroidではターゲットと名付けているが、Googleでは区分に名前はない。単に「アクティビティを開始する」等の表現のみ。

インテントのタイプ

「明示的インテント」「暗黙的インテント」の2つがある。パッケージ+クラスを指定するかしないかの違い。

明示的インテント

受け手側のアプリを指定したインテント

暗黙的インテント

受け手側のアプリを指定しないインテント
「誰かできる人(アプリ)にやらせて」とOS(Android)に依頼する形のインテント

 

例えば、URLをタップした場合、メールアプリなら「暗黙的インテント」にして既定のブラウザでURLを開くか、またはブラウザ選択画面を出すというAndroidの処理に任せて、ブラウザなら「明示的インテント」にして自身で開くといったようなことができる。

Googleでは「コンポーネントを指定するかどうか」とある。

Googleではコンポーネント名と項目1つで解説しているが、現実的にはパッケージ名とクラス名(=完全修飾クラス名)の両方を指定する必要がある項目である。

 

インテントの内容

MacroDroidの表現/Googleの表現で記載する。()付きの表現は直接的な表現のないモノ。

ターゲット/(直接的な表現なし)

実行するインテントの区分を選択する。

アクション/アクション

これから実行する(してほしい)こと、または実行されたことの内容。作法としてActivityとServiceでは実行することを指定し、Broadcastでは実行された内容を指定する。

MacrodDroidのインテント受信はBroadcastだけを受け取れる。Broadcastでしてほしいことを送る・受け取るという作りになるため少し行儀が悪くなる。

パッケージ/(コンポーネントの一部・パッケージ名)

インテントを受け取る相手の指定。クラスと同時指定が必要。

クラス/(コンポーネントの一部・クラス名)

インテントを受け取る相手の指定。パッケージと同時指定が必要。

このクラス名は完全修飾クラス名が必要で、基本的にパッケージ名から始まる名前になる。たいていパッケージと同じ内容繰り返すことになるが、「そういうもの」。

データ/(データの一部・データURI)

インテントで渡す内容のデータURIを指定。

MIMEタイプ/(データの一部・MIMEタイプ)

インテントで渡す内容のMIMEタイプを指定。

追加1~4/エクストラ

※追加が誤訳※

インテントにぶら下げる追加の情報。キーと値のペアで情報を表す。

インテントの仕様としては任意の数を追加可能だが、MacroDroidでは4つまでに制限されている。

(エクストラ=extra。意味合いとしては「映画のエキストラ」のエキストラと同じ)

(なし)/カテゴリ

MacroDroidでは非対応。

(なし)/フラグ

MacroDroidでは非対応。

 

 

アクション/エクストラの定義名と実際の値

プログラミングに置いて、多くは、定数はそのままの実際の値を使わずに、名前を付けて運用する。Google(Google公式ドキュメント)でも同様の記述を取っていて、例えば

  • メール送信時の宛先を格納するエクストラの定義名:EXTRA_EMAIL
    キーの実際の値(Constant Value):android.intent.extra.EMAIL

などの記述になっている。MacroDroidのアクション追加誤訳)、追加名誤訳)で入力すべきなのは、実際の値であることに注意が必要。

なお、Googleにはこれらを総称するような語句(「アクション名」や「エクストラ名」)はない。

 

インテントを送信

アクション:接続>インテントを送信

上記インテントの内容に従って設定する。注意点は次の通り。

  • アクションは入力必須
  • パッケージクラスは両方入力するか両方とも入力しないかのどちらか
  • データMIMEタイプ追加1~4は任意の入力
  • 設定可能なエクストラ(追加1~4で指定)は4つまで

エクストラを追加する場合は、キーと値をそれぞれ「パラメータ名を入力」「値を入力」と表示されている入力欄に入力する。

エクストラを5つ以上指定したい場合はプラグインの使用を検討する。

 

インテントを調べる方法

「あのアプリの○○を実行したい!」という場合、インテントで対応していれば実行可能な場合があります。アプリの仕様として公開されているのが一番ですが、Logcatを使い自身で調べられる場合があります。

https://egg.5ch.net/test/read.cgi/android/1645605957/212

 

インテント受信

トリガー:機器のイベント>インテント受信

特定のインテントを受信したときに発火するトリガー。受信できるインテントはBroadcastのみ。

受信したインテントに付随するエクストラの内容から、トリガーが発火するタイミングを絞り込むことができる。

また、エクストラの内容は変数に保存することが可能。

 

暗黙的インテントを受信する

例えばBluetooth機器の接続時ならACTION_STATE_CHANGEDインテントが発行されるので、このインテントの値(Constant Value:)android.bluetooth.adapter.action.STATE_CHANGEDをアクションに設定すると良い。

このタイミングは、Bluetoothイベントトリガーのデバイスに接続時/デバイスから切断時と同じタイミングである。MacroDroidの場合、エクストラから判断できる内容をわかりやすくオプションで選べるようにしていたり、さらにそこからデバイス名を取得する内部処理を組んでいたりしているということになる。

例えば、デバイスに接続時にしたいならエクストラに次を指定すればよい。

  • 追加名誤訳):android.bluetooth.adapter.extra.CONNECTION_STATE
  • 正確に一致する値:1

それぞれ定義名としてはEXTRA_CONNECTION_STATEエクストラがSTATE_CONNECTINGのときということになる。

 

明示的インテントを受信する

パッケージ名com.arlosoft.macrodroidに続けて任意の文字列をつなげてやれば任意のインテントを受け取ることができる。例えばcom.arlosoft.macrodroid.FOOなど。

別アプリ(スクリプト処理)からの完了報告を受けるのが主な使い道になると思われる。また、MacroDroidだけでもインテントを送信でエクストラを使うとローカル変数の受け渡しができたりもする。
 

エクストラに対する設定を追加する

非常にわかりにくい作りになっているので注意が必要。

インテントを追加ボタンから設定を追加する。この表現は誤訳。追加するのはエクストラに対する設定。
原文では ADD EXTRA となっているが、エクストラを追加する機能ではない。受信したエクストラを使って追加の処理をする機能である。

エクストラの値を変数に代入できるが、必ず、同時にトリガーのフィルタ処理がされることに注意。
 

インテント追加

誤訳。エクストラの設定ごとのまとまり。任意の数追加可能。追加した設定の分だけフィルタ処理がされるので矛盾が出ないように設定する必要がある。

 

追加名

誤訳。さらに、エクストラ名(EXTRA NAME)が分かりにくい表現で、実際に指定するのはエクストラのキーを示す文字列であることに注意が必要。

 

正確に一致する値

エクストラの値をこの値と比較して一致した場合にのみトリガーが発火するようになる(トリガーのフィルタ機能)。ワイルドカードや正規表現が使える。

フィルタ機能が目的でない場合は「*」とだけ指定してすべての値と一致するようにすると良い。

 

変数に代入

正確に一致する値でワイルドカードや正規表現を使っていた場合、トリガー発火時のエクストラの値が一つとは限らないので、変数に代入することによってその時々のエクストラの値を使えるようになる。

正確に一致する値に単一語句を指定した場合、トリガーが発火した=エクストラの値は指定した語句なので変数に代入を使う意味はない。

 


 

シェアボタン: このページをSNSに投稿するのに便利です。


最近更新されたページ

条件分岐

条件分岐の基本条件分岐とは条件の成立状況によって、続く処理を切り替える制御を言います。条件分岐では条件を設定します。条件は実行時に評価され、必ず2つのうちのどちらかの結果を持ちます。その結果とは、条件...

MacroDroidを使い倒す

HOME始め方基礎知識プラグイン変数制御コマンド 条件分岐アクションの実行順序注目コマンドクリップボードを更新 A シェルスクリプト A MacroD...

変数

変数変数とは、マクロが実行される度に変わる可能性のある(変わってほしい)値を、そのまま値を記述する代わりにマクロの組み立て段階で記述しておくための仕組みです。 変数の名前と値変数の名前に意味...

アクションの実行順序

アクションの実行順序アクションは、マクロが終了するまでか、中断効果のあるアクションまで連続で実行される。中断効果のあるアクションとは例えば次のアクション実行前に待機アクションなど。何かのマクロが実行中...

トリガーまで待機

トリガーまで待機アクション:MacroDroid固有>トリガーまで待機アクションを中断して、一時的なトリガーを設置し、そのトリガーの発火を待ってアクションを継続させることができるアクション。設定できる...

基礎知識

基礎知識AndroidはGoogleが開発したOSです。デバイスはベンダーがカスタマイズしています。MacroDroidはGoogle Playストアで公開されています。MacroDroidは一人(J...

プラグイン

プラグインMacroDroidに足りない機能を補ってくれる外部ツール。トリガーとして使えるもの、アクションとして使えるもの、どちらの機能もあるものがあるので導入時には一通り目を通しておくとよい。And...

注目コマンド

MacroDroidは様々な場面でチュートリアルが表示され、タップ・ロングタップ・またはメニューからのヘルプがあり、とても簡単に、親しみやすく作られています。しかしながら弊害として、横並びのコマンドな...

シェルスクリプト

シェルスクリプトアクション:アプリ>シェルスクリプトシェルスクリプトを実行し、結果を受け取ることができるアクション。MacroDroidは計算機能やデータ処理に強くないので簡単な処理でもマクロ化にとて...

HOME

MacroDroidとはArloSoftが開発、Google Playストアで公開しているAndroidの自動化アプリです Google Playストア https://play.google.com...

クリップボードを更新

クリップボードを更新アクション:機器アクション>クリップボードを更新[clipboard]の値をクリップボードの値にする、つまり、[clipboard]の値を更新するアクション。 v5.19...

始め方

MacroDroidの始め方2022.2.20 v5.22.5Google Play ストアでダウンロード・インストールアプリを起動したらチュートリアルを見るマクロを追加するマクロ名を入力するトリガー...

右メニュー

右メニューサンプル右メニューはヘッダーメニューの【編集】>【右メニューを編集する】をクリックすると編集できます。 ご自由に編集してください。 ここを編集する...

雑談質問相談掲示板

はじめにここは、雑談・質問・相談など何でも話題にする掲示板です。掲示板についてお知らせ特にありません。禁止事項 掲示板の趣旨と関係ない書き込み 誹謗・中傷含む書き込み 他サイトやアプリの宣伝 招待UR...