版權聲明:本文為博主原創文章,未經博主允許不得轉載。 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查看.