- 今天在跟踪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
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
或者:
1.2: 利用Action启动:
例如启动一个网页:http://www.sina.com.cn:
am start -a android.intent.action.VIEW-d
Action非常多,有些使用起来会有问题。之后再研究之。
1.3: 启动一个services:
am
还未具体尝试,之后准备专门写个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类型