ADB——应用交互

使用ADB与手机应用交互

  应用交互的操作包括:启动应用 / 调起Activity、调起Services、停止Service、发送广播、强行停止应用

 

基本命令

am <command> 

  常用的command如下:

command用途
start [options] <INTENT>启动<INTENT>指定的 Activity
startservice [options] <INTENT>启动<INTENT>指定的services
broadcast [options] <INTENT>发送<INTENT>指定的广播
force-stop <packagename>停止<packgame> 相关的进程

  <INTENT>参数很灵活,和写 Android 程序时代码里的 Intent 相对应。

  用于决定 intent 对象的选项如下:

参数含义
-a <ACTION>指定 action,比如android.intent.action.VIEW
-c <CATEGORY>指定 category,比如android.intent.category.APP_CONTACTS
-n <COMPONENT>指定完整 component 名,用于明确指定启动哪个 Activity,如com.example.app/.ExampleActivity

  <INTENT>里还能带数据,就像写代码时的 Bundle 一样:

  
参数 含义 --esn <EXTRA_KEY>null 值(只有 key 名)
`-e--es <EXTRA_KEY> <EXTRA_STRING_VALUE>`
--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>boolean 值
--ei <EXTRA_KEY> <EXTRA_INT_VALUE>integer 值
--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>component name
--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

# 调起 org.mazhuang.boottimemeasure/.MainActivity 并传给它 string 数据键值对 toast - hello, world。
adb shell am start -n org.mazhuang.boottimemeasure/.MainActivity --es "toast" "hello, world"

 

调起Services:

adb shell am startservice [options] <INTENT>

 

例如:

# 调起微信的某 Service。
adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService

# 另外一个典型的用例是如果设备上原本应该显示虚拟按键但是没有显示,可以试试这个
adb shell am startservice -n com.android.systemui/.SystemUIService

 

停止Service

adb shell am stopservice [options] <INTENT>

 

发送广播

adb shell am broadcast [options] <INTENT>

 

  可以向所有组件广播,也可以只向指定组件广播。

  例如

# 向所有组件广播 BOOT_COMPLETED:
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

# 只向 org.mazhuang.boottimemeasure/.BootCompletedReceiver 广播 BOOT_COMPLETED:
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver

 

  这类用法在测试的时候很实用,比如某个广播的场景很难制造,可以考虑通过这种方式来发送广播。

  既能发送系统预定义的广播,也能发送自定义广播。如下是部分系统预定义广播及正常触发时机:

action触发时机
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>

# 停止 360 安全卫士的一切进程与服务。
adb shell am force-stop com.qihoo360.mobilesafe

 

收紧内存:

adb shell am send-trim-memory  <pid> <level>
# pid: 进程 ID level: HIDDEN、RUNNING_MODERATE、BACKGROUND、 RUNNING_LOW、MODERATE、RUNNING_CRITICAL、COMPLETE

# 向 pid=12345 的进程,发出 level=RUNNING_LOW 的收紧内存命令。
adb shell am send-trim-memory 12345 RUNNING_LOW

 

 

         

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/zhuminghui/p/10489617.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值