1. 程式人生 > >adb shell am broadcast 手動發送廣播及adb shell am/pm其他命令

adb shell am broadcast 手動發送廣播及adb shell am/pm其他命令

了解 更多 強制 proxy tps ase 轉載 uid mar

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/zi_zhe/article/details/72229201

在命令行可用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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

啟動一個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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

發送一個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獲取設備權限
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

強制關閉一個應用程序

adb shell am force-stop [PACKAGE]

例如:通過指定包名強制關閉設置
adb shell am force-stop com.android.settings
  • 1
  • 2
  • 3
  • 4

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

adb shell pm list packages [option] [intent]
例如:列舉包名含有com.android的package
adb shell pm list packages com.android
  • 1
  • 2
  • 3

上面列舉的這些是用的相對比較多一些的命令, 想了解更多adb shell am/pm 的命令或者各參數含義,可以在命令行輸入
adb shell am 或 adb shell pm查看.

adb shell am broadcast 手動發送廣播及adb shell am/pm其他命令