使用 adb 命令向 Android 发送广播

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35008279/article/details/83340850

安装adb

  1. 安装homebrew

ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

  1. 安装adb

brew cask install android-platform-tools

  1. 检测安装是否成功

adb devices

adb 命令

  1. 进入adb 使用命令: adb shell

  2. 发送广播
    am broadcast -a action.com.custom.broadcast.quit --es package "com.test.broadcast"

am broadcast 后面为key 加参数

  1. 参数
    [-a < ACTION>]
    [-d < DATA_URI>]
    [-t < MIME_TYPE>]
    [-c < CATEGORY> [-c < CATEGORY>] …]
    [-e|–es < EXTRA_KEY> < EXTRA_STRING_VALUE> …]
    [–ez < EXTRA_KEY> < EXTRA_BOOLEAN_VALUE> …]
    [-e|–ei < EXTRA_KEY> < EXTRA_INT_VALUE> …]
    [-n < COMPONENT>]
    [-f < FLAGS>] [< URI>]

-a 后面为 action
–es 为 EXTRA_KEY

转换为代码为:

Intent intent = new Intent(“action.com.custom.broadcast.quit”);
intent.putExtra(“package”,“com.test.broadcast”);

adb shell am broadcast -a com.android.test --es test_string “this is test string” --ei test_int 100 --ez test_boolean true

前面为key,后面为alue,分别为String类型,int类型,boolean类型

其他参数类似

Demo

1、接收adb发送的系统的系统广播----屏幕变亮

①在程序中写一个广播接收者接收该广播

public class ScreeOnBroadcastReceiver extends BroadcastReceiver {

    private static final String TAG = "ScreeBroadcastReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "接收到了系统屏幕变亮的广播数据");
        Toast.makeText(context, "接收到了系统屏幕变亮的广播数据", Toast.LENGTH_SHORT).show();
    }
}

②在配置文件注册该广播

<receiver
            android:name=".ScreeOnBroadcastReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.ACTION_SCREEN_ON"/>
            </intent-filter>
</receiver>

③在adb中输入命令

adb shell am broadcast -a android.intent.action.ACTION_SCREEN_ON

在程序中可收到发送的该广播
在这里插入图片描述
2. 接收adb发送的自定义广播

①定义一个广播接收器

public class MyBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "receive in MyBroadcastReceiver", Toast.LENGTH_SHORT).show();
    }
}

②在配置文件注册该广播

<receiver
            android:name=".MyBroadcastReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.example.test.MY_BROADCAST"/>
            </intent-filter>
</receiver>

③在adb中输入命令

adb shell am broadcast -a com.example.test.MY_BROADCAST

在程序中可收到发送的该广播

注:“mybroadcast”为配置文件中注册的action的名称

展开阅读全文

没有更多推荐了,返回首页