Android 通過adb shell am broadcast發送廣播

原文地址:http://www.ithao123.cn/content-1280415.html


Android 通過adb shell am broadcast發送廣播

[摘要:經過敕令止履行 adb shell am broadcast 收收播送關照。 adb shell am broadcast 背面的參數有: [-a ACTION] [-d DATA_URI] [-t MIME_TYPE] [-c CATEGORY [-c CATEGORY] ...] [-e|--es EXTRA_KEY EXTRA_STRING_VALUE ...] [--ez EXTRA_] 

通過命令行執行adb shell am broadcast發送廣播通知。


adb shell am broadcast 後面的參數有:

[-a <ACTION>]
[-d <DATA_URI>]
[-t <MIME_TYPE>] 
[-c <CATEGORY> [-c <CATEGORY>] ...] 
[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...] 
[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...] 
[-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...] 
[-n <COMPONENT>]
[-f <FLAGS>] [<URI>]


例如:

adb shell am broadcast -a com.android.test --es test_string "this is test string" --ei test_int 100 --ez test_boolean true


說明:藍色爲key,紅色爲alue,分別爲String類型,int類型,boolean類型


==================================================================================

擴展閱讀:

db shell am instrument [options] <COMPONENT>

作用:啓動對instrument實例的監視。

參數[options]:

-e <key> <value> // -e選項需要放在-w選項之前

作用:提供了以鍵值對形式存在的測試選項。Android中提供了多種鍵值對,具體參見下表。
舉例:-e class com.android.phone.FIncomingCallTests#testRejectCall

-r

作用:以原始形式輸出測試結果。該選項通常是在性能測試時與-e perf true一起使用。

參數 <COMPONENT>:

-w <test_package_name>/<runner_class> //<test_package_name>和<runner_class>在測試工程的AndroidManifest.xml中查找

作用:保持adb shell打開直至測試完成
舉例:-w com.android.phone.tests/com.android.phone.runners.FunctionalTestRunner

<key> <value>參考表

Key Value Description
package <Java_package_name> The fully-qualified Java package name for one of the packages in the test application. Any test case class that uses this package name is executed. Notice that this is not an Android package name; a test package has a single Android package name but may have several Java packages within it.
class <class_name> The fully-qualified Java class name for one of the test case classes. Only this test case class is executed.
<class_name>#method name A fully-qualified test case class name, and one of its methods. Only this method is executed. Note the hash mark (#) between the class name and the method name.
func true Runs all test classes that extend InstrumentationTestCase.
unit true Runs all test classes that do not extend either InstrumentationTestCase orPerformanceTestCase.
size [small | medium | large] Runs a test method annotated by size. The annotations are @SmallTest,@MediumTest, and @LargeTest.
perf true Runs all test classes that implement PerformanceTestCase. When you use this option, also specify the -r flag for am instrument, so that the output is kept in raw format and not re-formatted as test results.
debug true Runs tests in debug mode.
log true Loads and logs all specified tests, but does not run them. The test information appears in STDOUT. Use this to verify combinations of other filters and test specifications.
emma true Runs an EMMA code coverage analysis and writes the output to/data//coverage.ec on the device. To override the file location, use thecoverageFile key that is described in the following entry.

Note: This option requires an EMMA-instrumented build of the test application, which you can generate with the coverage target.

coverageFile <filename>

Overrides the default location of the EMMA coverage file on the device. Specify this value as a path and filename in UNIX format. The default filename is described in the entry for the emma key

 

adb shell am start [options] <INTENT>

作用:啓動一個activity

舉例:adb shell am start -a com.lt.test.action.SECOND

舉例:adb shell am start -n com.lt.test/.MyActivity

說明:[options]與<INTENT>參見 http://developer.android.com/tools/help/adb.html#am

adb shell am startservice [options] <INTENT>

作用:啓動一個service

舉例:adb shell am startservice -a com.lt.test.action.ONESERVICE
舉例:adb shell am startservice -n com.lt.test/.MyService

 

adb shell am force-stop <PACKAGE>
作用:強制關閉一個應用程序

舉例:adb shell am force-stop com.lt.test

 

adb shell am broadcast [options] <INTENT>

作用:發送一個廣播
舉例:adb shell am broadcast -a "action_finish" (發送一個廣播去關閉一個activity)
舉例:adb shell am broadcast -a android.intent.action.MASTER_CLEAR(恢復出廠設置的方法,會清除內存所有內容)

舉例:adb shell am broadcast -n com.lt.test/.MyBroadcast

 

adb shell pm list packages [options] <INTENT>

作用:列舉出所有包含<INTENT>的package

舉例:adb shell pm list packages com.lt

說明:[options]與<INTENT>參見 http://developer.android.com/tools/help/adb.html#pm

 

參考鏈接:

http://developer.android.com/tools/help/adb.html


==========================================================================================

擴展閱讀:

第一部分:

1. ubuntu下配置環境anroid變量:

在終端執行 sudo gedit /etc/profile 打開文本編輯器,在最後追加#set android environment

2. 運行Eclipse,還需要配置JAVA環境變量

#set java environment

JAVA_HOME=/home/loginname/jdk目錄名

JRE_HOME=/home/loginname/jdk目錄名/jre

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=/home/loginname/android-sdk-linux_86/tools:$PATH

保存後,重啓

3. 加入設備ID標識到當前的android調試環境

在/home/loginname/.android文件中添加,android終端的設備標識ID

4. 更新sdk

【android update sdk】更新sdk

5. 常用命令:

【adb help】獲取幫助

【adb get-serialno】獲取設備串號

【adb root】獲取root權限,對部分手機有用,大部分上市手機已經把這個功能給關閉了。獲取root權限還可以通過豌豆夾等第三方工具。

【adb kill-server】殺死adb的server進程。

【adb start-server】啓動adb的server進程。

【adb devices】查看建立連接的android終端。

【android list】顯示所有android終端

【ddms】啓動ddms

【adb remount】重新加載硬盤。

【adb reboot】重新啓動終端。

【adb install /path/appname】安裝應用程序

【adb uninstall com.android.helloworld】卸載helloworld,系統帶的應用不可卸載。

【adb push /sourcepath/filename /destinationpath/filename】從pc端拷貝一個文件到終端

【adb pull /sourcepath/filename /destinationpath/filename】從終端拷貝一個文件到pc端

【adb logcat -v time -s TAGNAME】顯示自定義的TAGNAME並顯示時間

【adb ppp】通過usb啓動ppp

【adb monkey -p /path/appname -v 100】對程序進行強制測試100次

【adb shell】在pc端啓動shell命令終端。

以上命令需要pc端的root權限,命令失效時,可以嘗試切換工作目錄到sdk的tools下,例如:sudo ./adb kill-server,sudo ./adb start-server。

6. shell下命令,可以使用BusyBox工具集:

【am start -n {包名(package)}/{包名}.{活動activity名稱}】啓動某一個app的activity,配置參考AndroidManifest.xml,例如鬧鐘: 
 # am start -n com.android.alarmclock/com.android.alarmclock.AlarmClock

【am broadcast -a android.intent.action.ActionName】發送廣播消息

【setprop KEY VALUE】設置key的property值位value

【getprop KEY】獲取該key的property值

【getevent】獲取所有事件

【watchprops】監聽property值的變化

【stop SERVER】強行停止某一個服務

【start SERVER】啓動某一個服務

【ioctl】控制設備

【dumpsys activity】顯示活動棧信息

【top】顯示瞬間的進程的資源佔用等信息

【free】顯示當前進程內存使用情況

【ps】顯示進程的自身標識信息

【rm /path/filename】從終端刪除一個文件

【mkdir】新建一個目錄或者文件

【grep】查找特定內容

【ls】顯示當前目錄下的文件

【cd】切換當前目錄

【chmod】更改文件屬性

【cp】拷貝文件

【dd】複製文件

【mv】移動目錄文件,或者改名

【cat】查看文件內容

【kill】殺死進程

【ipconfig】查看更改網絡接口地址和參數

【ping】檢測網絡狀態

【netstat】查看網絡狀態

【telnet】登錄遠程主機

【sqlite3 /path/DATABASENAME.db】打開某一個數據庫。之後即可使用select,insert,delete等數據庫操作命令

【tcpdump -p -nnn -vvv -s 0 -w /PATH/NAME.pcap port 80 and tcp】網絡調試抓包

【gst-launch playbin uri=file:///system/media/audio/bootaudio.mp3】gst多媒體框架,播放音頻文件

【alsa_amixer】音頻調試命令,可以切換聲道,調節音量,切換設備。不同的芯片廠家的參數設置有所不同。

【alsa_aplay -D AndroidPlayback_Speaker_normal  /cache/music/dial/0.wav】通過alsa播放pcm碼流。

【alsa_arecord】通過alsa實現錄音

【am start -n com.android.music/com.android.music.MediaPlaybackActivity -d /sdcard/bootaudio.mp3】啓動android進程播放mp3

【stack --symbols-dir=./out/target/product/NAME/symbols ramdump】查看調用堆棧

【exit】退出shell

通過 adb shell, cd /system/bin,ls可以列表出大部分可用的命令。

7. 部分android手機的VenderID

# 0x0525 NXP芯片

# 0x18D1 Broadcom2457雙卡芯片

# 0x2314 GHT Moke

# 0x04E8 AnyCall GT-I5508

# 0x22B8 Moto XT701 XT300

# 0x0BB4 HTC A8180

第二部分:

adb(Android Debug Bridge)是Android 提供的一個通用的調試工具,藉助這個工具,我們可以很好的調試開發的程序,adb.exe在你安裝的android的sdk開發包tools目錄下,

adb使用方法:

adb [-d|-e|-s <serialNumber>] <command>

當你發出一個命令,系統啓用Android客戶端。客戶端並不與模擬器實例相關,所以如果雙服務器/設備是運行中的,你需要用-d選項去爲應被控制的命令確定目標實例。關於使用這個選項的更多信息,可以查看模擬器/設備實例術語控制命令。

1、安裝應用到模擬器:

你可以使用adb從你的開發電腦上覆制一個應用程序,並且將其安裝在一個模擬器/設備實例。像這樣做,使用install命令。這個install命令要求你必須指定你所要安裝的.apk文件的路徑: 
adb install <path_to_apk> 
爲了獲取更多的關於怎樣創建一個可以安裝在模擬器/設備實例上的.apk文件的信息,可參照Android Asset Packaging Tool (aapt). 
要注意的是,如果你正在使用Eclipse IDE並且已經安裝過ADT插件,那麼就不需要直接使用adb(或者aapt)去安裝模擬器/設備上的應用程序。否則,ADT插件代你全權處理應用程序的打包和安裝. 
如果要刪除某個應用,按下面操作,例如應用爲test: 
adb shell 
cd /data/app 
rm test.apk

2、進入設備或模擬器的shell:

adb shell 
通過上面的命令,就可以進入設備或模擬器的shell環境中,在這個Linux Shell中,你可以執行各種Linux 的命令,另外如果只想執行一條shell命令,可以採用以下的方式: 
adb shell [command] 
如:adb shell dmesg會打印出內核的調試信息。

3、發佈端口:

可以設置任意的端口號,做爲主機 向模擬器或設備的請求端口。如: 
adb forward tcp:5555 tcp:8000

4、從模擬器/設備中拷入或拷出文件:

可以使用adbpull ,push命令將文件複製到一個模擬器/設備實例的數據文件或是從數據文件中複製。install命令只將一個.apk文件複製到一個特定的位置,與其不 同的是,pull和push命令可令你複製任意的目錄和文件到一個模擬器/設備實例的任何位置。 
從模擬器或者設備中複製文件或目錄,使用(如下命): 
adb pull <remote> <local> 
將文件或目錄複製到模擬器或者設備,使用(如下命令) 
adb push <local> <remote> 
在這些命令中,<local>和<remote>分別指通向自己的發展機(本地)和模擬器/設備實例(遠程)上的目標文件/目錄的路徑 
下面是一個例子: 
adb push test.txt /data/dat/test/test.txt、

5、查詢模擬器/設備實例:

在發佈adb命令之前,有必要知道什麼樣的模擬器/設備實例與adb服務器是相連的。可以通過使用devices 
命令來得到一系列相關聯的模擬器/設備: 
adb devices

作爲迴應,adb爲每個實例都制定了相應的狀態信息: 
序列號——由adb創建的一個字符串,這個字符串通過自己的控制端口<type>-<consolePort>唯一地識別一個模擬器/設備實例。 
下面是一個序列號的例子: 
emulator-5554 
實例的連接狀態有三種狀態: 
offline — 此實例沒有與adb相連接或者無法響應. 
device — 此實例正與adb服務器連接。注意這個狀態並不能百分之百地表示在運行和操作Android系統,因此這個實例是當系統正在運行的時候與adb連接的。然而,在系統啓動之後,就是一個模擬器/設備狀態的正常運行狀態了. 
每個實例的輸出都有如下固定的格式: 
[serialNumber] [state] 
下面是一個展示devices命令和輸出的例子 : 
$ adb devices 
List of devices attached 
emulator-5554  device 
emulator-5556  device 
emulator-5558  device

如果當前沒有模擬器/設備運行,adb則返回 no device .

6、查看bug報告:

adb bugreport

7、記錄無線通訊日誌:

一般來說,無線通訊的日誌非常多,在運行時沒必要去記錄,但我們還是可以通過命令,設置記錄: 
adb shell 
logcat -b radio

8、獲取設備的ID和序列號:

adb get-product 
adb get-serialno

9、訪問數據庫SQLite3

adb shell 
sqlite3

如要打開已存在數據庫:

sqlite3 <路徑>/dbname.db

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章