最全ADB命令手册(四)

709 阅读3分钟

原文地址:Most complete ADB command manual

作者:larson

书接上文

与应用程序交互

主要使用am <command>命令,常用的<command>如下:

命令使用
start [options] <INTENT>启动制定的活动<INTENT>
<startservice> [options] <INTENT>启动指定的服务<INTENT>
<broadcast> [options] <INTENT>发送指定的广播<INTENT>
force-stop <packagename>停止<packagename>相关进程

<INTENT>参数非常灵活,和编写Android程序时代码中的Intent相对应。

用于确定意图对象的选项如下:

参数意义
-a <ACTION>指定操作,例如android.intent.action.VIEW
-c <CATEGORY>指定类别,例如android.intent.category.APP_CONTACTS
-n <COMPONENT>指定完整的组件名称,用于明确指定要启动哪个Activity,例如com.example.app/.ExampleActivity

<INTENT>也可以携带数据,就像写代码的Bundle一样:

参数意义
--esn <EXTRA_KEY>空值(仅键名)
`-e--es <EXTRA_KEY> <EXTRA_STRING_VALUE>
--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>布尔值
--ei <EXTRA_KEY> <EXTRA_INT_VALUE>整数值
--el <EXTRA_KEY> <EXTRA_LONG_VALUE>long值
--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE>float值
--eu <EXTRA_KEY> <EXTRA_URI_VALUE>URI
--ecn <EXTRA-KEY> <EXTRA_COMPONENT_NAME_VALUE组件名称
eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]integer数组
--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]long数组

激活Activity

命令格式:

adb shell am start [options] <INTENT>

例如:

adb shell am start -n com.tencent.mm/.ui.LauncherUI

表示激活了微信的主界面

adb shell am start -n org.mazhuang.boottimemeasure/.MainActivity -es "toast" "hello, world"

意思是调用org.mazhuang.boottimemeasure/.MainActivity,把字符串数据值对toast hello, world传递给它。

接送Service

命令格式:

adb shell am startservice [options] <INTENT>

例如:

adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuth

表示微信某项服务已经开通。

发送广播

命令格式:

adb shell am broadcast [options] <INTENT>

它可以广播给所有组件,也可以自后广播给指定的组件。

例如,向所有组件广播BOOT_COMPLETED:

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

在比如,只向org.mazhuang.boottimemeasure/.BootCompletedReciver广播BOOT_COMPLETED:

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.bottimemeasure/.BootCompletedReceiver

这种用法在测试的时候很实用,比如一个广播场景很难制作出来,可以考虑用这种方式发送广播,既可以发送系统预定义的广播,也可以发送自定义的广播,下面是部分系统预定义广播及正常触发时序:

行动触发时机
android.net.conn.CONNECTIVITY_CHANGE网络连接已改变
android.intent.action.SCREEN_ON屏幕亮起
android.intent.action.SCREEN_OFF屏幕熄灭
android.intent.action.BATTERY_LOW如果电池电量低,会弹出低电量提示框
android.intent.action.BATTERY_OKAY电池已恢复
android.intent.action.BOOT_COMPLETED设备已启动
android.intent.action.DEVICE_STORAGE_LOW存储空间太低
android.intent.action.DEVICE_STORAGE_OK存储空间恢复
android.intent.action.PACKAGE_ADDED安装了新应用程序
android.net.wifi.STATE_CHANGEWiFi连接状态已改变
android.net.wifi.WIFI_STATE_CHANGEDWiFi状态更改为启用/禁用/正在启动/正在禁用/未知
android.intent.action.BATTERY_CHANGED电池电量已发生变化
android.intent.action.INPUT_METHOD_CHANGED系统输入法已改变
android.intent.action.ACTION_POWER_CONNECTED外部电源连接
android.intent.action.ACTION_POWER_DISCONNECTED外部电源断开
android.intent.action.DREAMING_STARTED系统开始休眠
android.intent.action.DREAMING_STOPPED系统停止休眠
android.intent.action.WALLPAPER_CHANGED壁纸已更改
android.intent.action.HEADSET_PLUG插入耳机
android.intent.action.MEDIA_UNMOUNTED卸载外部媒体
android.intent.action.MEDIA_MOUNTED安装外部媒体
android.os.action.POWER_SAVE_MODE_CHANGED启用省电模式

(以上广播都可以通过adb触发)

强行停止应用程序

命令

adb shell am force-stop <packagename>

命令示例:

adb shell am force-stop com.qihoo360.mobilesafe

表示停止360安全卫士的所有进程和服务

禁用应用程序并启动

命令示例:

adb shell pm disable-user <packagename>
adb shell pm disable <packagename>
adb shell pm disable-user [options] <packagename>

命令示例:

adb shell pm enable <packagename>

撤销应用程序权限

1.向应用授予权限。仅可授予应用声明的可选权限

adb shell pm grant <packagename> <PACKAGE_PERMISSION>

例如:

adb -d shell pm grant packagename android.permission.BATTERY_STATUS
  1. 取消应用授权
adb shell pm revoke <packagename> <PACKAGE_PERMISSION>

选项 --user user_id: the user to be disabled.

例如,向应用程序授予权限。在运行Android 6.0(API级别23)及更高版本的设备上,该权限可以是应用程序清单中声明的任何权限。在运行Android 5.1 (API级别22)及更低版本的设备上,它必须是应用程序定义的可选权限。