10
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

コマンドラインからIntentをbroadcastする

Last updated at Posted at 2015-11-25

以下のような感じで、adb shellからIntentをブロードキャストできます

zsh
% adb shell
$ am broadcast -a <ACTION名> --es <KEY> <VALUE>

今回は、以下のようにしてみました。

zsh
$ am broadcast -a ACTION_TEST --es "from" "adbから来たよ"

コマンドオプションの--esputExtra(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から来ましたとログが吐かれるはずです。

おわり。

`

10
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?