Android adb命令发送广播介绍

04-27 1303阅读 0评论

Android adb命令发送广播介绍

文章目录

  • Android adb命令发送广播介绍
    • 一、前言
    • 二、发送广播命令介绍
      • 1、发送广播命令格式
      • 2、发送广播示例
        • (1) 发送开机广播
        • (2) 发送自定义广播携带String数据
        • (3) 发送自定义广播携带int数据
        • (4) 发送自定义广播携带多个数据
        • (5) 发送自定义广播设置为前台广播
        • 3、Android Java代码介绍广播主要代码
        • 三、其他
          • 1、adb发送广播的完整格式
          • 2、Android 发送广播设置flags的作用
          • 3、Android 蓝牙相关广播介绍
          • 4、Android13 不能静态注册的几个广播

            一、前言

            Android 广播除了代码中发送,还可以使用命令模拟发送,只要应用代码中进行了监听,都可以正常接收到的。

            Android adb命令发送广播介绍,Android adb命令发送广播介绍,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,注册,设置,第1张
            (图片来源网络,侵删)

            掌握手动发送广播命令,可以方便某些代码的调试。

            所以学习一下Android adb方式 发送广播命令是有用的。有需要的可以收藏使用。

            二、发送广播命令介绍

            1、发送广播命令格式

            adb shell 发送广播的完整命令格式:

            adb shell am broadcast -a  [-d ] [-t ] [-c ] [-n ] [-f ] [-e|--es|ei|eb  ]...
            

            其中, `` 是广播的动作,可以是Android系统定义的动作,也可以是自定义的动作;`

            -d 是数据的URI;-t 是数据的MIME类型;-c 是广播的类别;-n 是广播的组件;-f 是标志位;

            –es|ei|ef` 是额外的键值对参数。

            Android adb命令发送广播介绍,Android adb命令发送广播介绍,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,注册,设置,第2张
            (图片来源网络,侵删)

            其中,-d,-t,-c,-n,-f都是不常用的,只有设置额外数据的 --es,–ei这些是常用的,并且可以设置多个。

            es表示 extra_string,ei表示 extra_int,其他的eu,ef以此类推。

            以下是一个示例,发送一个最简单的自定义广播:

            adb shell am broadcast -a test
            

            这样就可以发送一个自定义动作action为 test 的广播,监听了这个广播的应用就可以收到广播。

            自定义的action是可以很随意的,不是一定要设置成 android.intent.XXX或者com.broadcast.XXX

            即使一个一两个字母也可以是action,但是一般情况设置的action具有一定含义会避免混乱。

            Android adb命令发送广播介绍,Android adb命令发送广播介绍,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,注册,设置,第3张
            (图片来源网络,侵删)

            有时候要指定某个应用和某个类来接收的广播,可以用 “-n”,比如:

            adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n package_name/class_name
            

            下面是部分常用广播示例。

            2、发送广播示例

            (1) 发送开机广播
             adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
            

            开机广播也是可以发送的,并且是没有参数的;

            开机完成后,再发送这个广播,监听了开机广播的应用是会再次接收到这个广播的。

            但是一般不会手动发这个广播,除了特殊调试使用,因为一般情况意义不大。

            除了开机广播,其他的大部分系统广播,比如网络变化广播,时间变化广播等等,都是可以通过命令发送的。

            有些广播是携带数据的,数据的携带可以参考下面示例。

            (2) 发送自定义广播携带String数据
             adb shell am broadcast -a test -es name liwenzhi
            
            (3) 发送自定义广播携带int数据
             adb shell am broadcast -a test -ei age 100
            
            (4) 发送自定义广播携带多个数据
             adb shell am broadcast -a test -es name liwenzhi --ei age 100 --ef height 180.11
            

            以此类推,多个类型数据用空格隔开就可以了。

            (5) 发送自定义广播设置为前台广播
             adb shell am broadcast -a test -es name liwenzhi -f 0x10000000
            

            3、Android Java代码介绍广播主要代码

                //注册广播
                public void registerBroadcast(Context context) {
                    String a = Intent.ACTION_SCREEN_OFF;
                    final IntentFilter intentFilter = new IntentFilter();
                    intentFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
                    intentFilter.addAction("test");
                    context.registerReceiver(mMyReceiver, intentFilter);
                }
                //反注册广播
                public void unRegisterBroadcast(Context context) {
                    context.unregisterReceiver(mMyReceiver);
                }
                //广播监听
                private final BroadcastReceiver mMyReceiver = new BroadcastReceiver() {
                    @Override
                    public void onReceive(Context context, Intent intent) {
                        final String action = intent.getAction();
                        if (action == null) {
                            DebugLog.error("action == null!");
                            return;
                        }
                        //action打印
                        DebugLog.info("action = " + action);
                        //数据获取
                        String name = intent.getStringExtra("name");
                        DebugLog.info("name = " + name);
                        int age = intent.getIntExtra("age",-1);
                        DebugLog.info("age = " + age);
                        //处理相关action事务
                        switch (action) {
                            case "test":
                            break;
                            //...
                        }
                }
            

            三、其他

            1、adb发送广播的完整格式

            上面介绍的只是一些常用的格式,还有一些复制的格式没有介绍。

            如果要看比较完整的命令集,输入命令 “adb shell am” 回车后有很多相关命令的介绍,

            拉到最后里面包含了 broadcast 命令介绍

             specifications include these flags and arguments:
                [-a ] [-d ] [-t ] [-i ]
                [-c  [-c ] ...]
                [-n ]
                [-e|--es   ...]
                [--esn  ...]
                [--ez   ...]
                [--ei   ...]
                [--el   ...]
                [--ef   ...]
                [--ed   ...]
                [--eu   ...]
                [--ecn  ]
                [--eia  [,

免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1303人围观)

还没有评论,来说两句吧...

目录[+]