以下のような感じで、adb shellからIntentをブロードキャストできます
zsh
% adb shell
$ am broadcast -a <ACTION名> --es <KEY> <VALUE>
今回は、以下のようにしてみました。
zsh
$ am broadcast -a ACTION_TEST --es "from" "adbから来たよ"
コマンドオプションの--es
はputExtra(String name, String value)
に該当します。
ちなみにputExtra(String name, int value)
なら、--ei
になります。
次に、BroadcastReceiver
クラスを継承した、Intentを受け取るクラスをつくります。
public class TestReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
Log.e("TAG",extras.getString("from"));
}
}
そして、AndroidManifestに以下を追記します。
receiverには、BroadcastReceiverを継承したクラス名と、
actionには、そのクラスが受け取るインテントのaction名を記述します。
<receiver android:name=".TestReceiver" >
<intent-filter>
<action android:name="ACTION_TEST"/>
</intent-filter>
</receiver>
※ホントは、名前がかぶらないように通常はaction名にはアプリのpackage名を先頭にいれるのが慣例のようです。
これで、完了です。
adb shellからコマンドを叩けば、adbから来ました
とログが吐かれるはずです。
おわり。
`