Android下am命令启动Activity、Service、BroadcastReceiver

来源:互联网 发布:苹果数据精灵 编辑:程序博客网 时间:2024/06/06 06:48
今天在跟踪android.intent.action.BATTERY_WARNING通知的出处的时候,意外的发现发通知的地方在底层c部分的代码,并且使用am命令发送通知出来。可以通过adb shell 进入android 的Linux命令界面,输入可以通过am命令启动android中的Activity,Service,BroadcastReceiver 等组件。

Android下有am命令非常实用,其代码在frameworks\base\cmds\am\src\com\android\commands\am


1.具体用法
1.1: 启动一个指定Activity:
方法为:
am start  

-n<COMPONENT>

COMPONENT为:package名/Activity名。

例:
Android有个OpenGLES例子程序.GL2JNI.

其main.xml中显示:其package="com.android.gl2jni"
activity android:name="GL2JNIActivity"

则Package名为:com.android.gl2jni
Activity名为:com.android.gl2jni.GL2JNIActivity.或者可以写为.GL2JNIActivity.

am start -n 
com.android.gl2jni/com.android.gl2jni.GL2JNIActivity
或者:
 
am start-n  com.android.gl2jni/.GL2JNIActivity 



1.2: 利用Action启动
例如启动一个网页:http://www.sina.com.cn:
am start -a android.intent.action.VIEW-d  http://www.sina.com.cn
Action非常多,有些使用起来会有问题。之后再研究之。




1.3: 启动一个services:

am startservice package/services
还未具体尝试,之后准备专门写个services来尝试。


1.4: 发送一个广播

通过命令行执行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类型

0 0