應用交互的操做包括:啓動應用 / 調起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