adb shell am broadcast 手动发送广播及adb shell am/pm其他命令
阅读原文时间:2021年04月20日阅读:1

在命令行可用adb shell am broadcast -a [action] 手动发送广播

adb shell am [command] 的用法:

首先看一下各部分的作用
adb shell , 进入到设备的shell模式;
am , 是activity manager的缩写,它可以启动activity,启动service,发送广播等

同样的道理 pm ,就是package manager的缩写.

启动一个activity

adb shell am start [option] [intent]

例如:
adb shell am start -a android.settings.ACTION_NAME
adb shell am start -n com.android.settings/.Activity_class_name

参数含义: -a, Action ; -n, Component

例如:打开系统设置
adb shell am start -n com.android.settings/.Activity_class_name

例如:打开系统设置-输入法设置
adb shell am start -a android.settings.INPUT_METHOD_SETTINGS

例如:通过包名+类名开启系统照相机
adb shell am start -n com.android.camera/.Camera

例如:打开拨号界面,直接拨打10086
adb shell am start -a android.intent.action.CALL -d tel:10086

参数含义: -d, DATA_URI

启动一个service

adb shell am startservice [option] [intent]

例如:
adb shell am startservice -a android.settings.ACTION_NAME
adb shell am startservice -n com.android.settings/.Service_class_name

反之,停止service就是把参数换成stopservice

发送一个broadcast

adb shell am broadcast [option] [intent]

例如:发送一个恢复出厂设置的广播
adb shell am broadcast -a android.intent.action.MASTER_CLEAR

例如:模拟手机低电环境
adb shell am broadcast -a android.intent.action.BATTERY_CHANGED --ei "level" 3 --ei "scale" 100

参数含义: --ei, [EXTRA_KEY, EXTRA_INT_VALUE] int类型键值对

但有时候会出现
java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.BATTERY_CHANGED from pid=9747, uid=2000
at android.os.Parcel.readException(Parcel.java:1683)
at android.os.Parcel.readException(Parcel.java:1636)
at android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:3609)
at com.android.commands.am.Am.sendBroadcast(Am.java:772)
at com.android.commands.am.Am.onRun(Am.java:404)
at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
at com.android.commands.am.Am.main(Am.java:121)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:310)

如果出现上面的错误, 就是没有执行权限,执行adb root, adb remount获取设备权限

强制关闭一个应用程序

adb shell am force-stop [PACKAGE]

例如:通过指定包名强制关闭设置
adb shell am force-stop com.android.settings

列举出所有包含[intent]的包名

adb shell pm list packages [option] [intent]
例如:列举包名含有com.android的package
adb shell pm list packages com.android

上面列举的这些是用的相对比较多一些的命令, 想了解更多adb shell am/pm 的命令或者各参数含义,可以在命令行输入
adb shell am 或 adb shell pm查看.

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器