ADB——应用交互

使用ADB与手机应用交互

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

 

基本命令shell

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:
app

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:ui

adb shell am startservice [options] <INTENT>

 

例如:spa

# 调起微信的某 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_CHANGE WiFi 链接状态发生变化
android.net.wifi.WIFI_STATE_CHANGED WiFi 状态变为启用/关闭/正在启动/正在关闭/未知
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
相关文章
相关标签/搜索