使用adb 发送广播 动态改变app内的值

前言

在开发过程中有时候我们需要做一些调试工作。可以通过adb发送广播实现。

广播注册

注意最后一个参数,Context.RECEIVER_EXPORTED 这是Android 34以后强制要求的,方便外部发送这个广播。否则会报错

kotlin 复制代码
		 val filter = IntentFilter()
        filter.addAction("com.aaa.bbb.ccc.running.test")
        context?.let {
            mLogger.d("registerReceiver is success")
            it.applicationContext.registerReceiver(testReceiver, filter, Context.RECEIVER_EXPORTED)
        }

广播监听器

kotlin 复制代码
    private var testReceiver: BroadcastReceiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context?, intent: Intent?) {
            var appState = intent?.getStringExtra("appState");
            mLogger.w("接收到状态 appState=" + appState)
            if ("error".equals(appState)) {
                recordServiceStared = false;
            }
        }
    }

adb 发射命令

其中 -a 后面是上面的Action。

-es 后面跟的是参数

cmd 复制代码
adb shell am broadcast -a com.aaa.bbb.ccc.running.test --es appState "error"
参数 类型 含义 示例
--es String 添加一个字符串(String)类型的 Extra --es key "value"
--ez Boolean 添加一个布尔值(true/false) --ez key true
--ei Integer 添加一个整数(int) --ei key 123
--el Long 添加一个长整型(long) --el key 1234567890
--ef Float 添加一个浮点数(float) --ef key 3.14
--eu URI 添加一个 URI 类型 --eu key content://media/external/audio/media/1
--ecn ComponentName 添加一个组件名(用于指定接收器) --ecn key com.example.app/.MyReceiver
--eia int[] Array 添加整型数组 --eia key 1 2 3
--ela long[] Array 添加长整型数组 --ela key 1000 2000 3000
--efa float[] Array 添加浮点数组 --efa key 1.1 2.2 3.3
--esa String[] Array 添加字符串数组 --esa key "a" "b" "c"
--esn null 添加一个 null 值 --esn key

补充

有时候应用没有退出,这个时候监听器没有生效。需要杀了app,重试

cmd 复制代码
adb shell am force-stop <包名>
相关推荐
TeleostNaCl9 小时前
如何安装 Google 通用的驱动以便使用 ADB 和 Fastboot 调试(Bootloader)设备
android·经验分享·adb·android studio·android-studio·android runtime
练小杰1 天前
【Mysql-installer-community-8.0.26.0】Mysql 社区版(8.0.26.0) 在Window 系统的默认安装配置
数据库·sql·mysql·adb·配置文件·mysql安装·关系型数据库
袁美丽..2 天前
Android studio的adb和终端的adb互相抢占端口
android·adb·android studio
fatiaozhang95272 天前
浪潮CD1000-移动云电脑-RK3528芯片-2+32G-安卓9-2种开启ADB ROOT刷机教程方法
android·网络·adb·电脑·电视盒子·刷机固件·机顶盒刷机
黎宇幻生3 天前
Java全栈学习笔记30
android·adb
今人不见古时月,今月曾经照古人4 天前
将 Android 设备的所有系统日志(包括内核日志、系统服务日志等)完整拷贝到 Windows 本地
windows·adb
zhangphil4 天前
Android adb shell命令分析应用内存占用
android·adb
华农第一蒟蒻4 天前
Elasticsearch赋能3D打印机任务统计分析
java·大数据·spring boot·后端·elasticsearch·adb·maven
一个CCD5 天前
MySQL主从复制之进阶延时同步、GTID复制、半同步复制完整实验流程
android·mysql·adb
独行soc6 天前
2025年渗透测试面试题总结-42(题目+回答)
android·数据库·安全·adb·面试·渗透测试·sqlite