如何从命令行发送String [] intent额外值?

时间:2013-11-04 14:20:22

标签: android string android-intent command-line adb

我的自动化测试通过adb shell am发送意图,但是我在指定额外的字符串数组时遇到了问题。

根据Intent class docs,可以将 String [] 额外添加到意图中。

am命令的Intent specification docs未列出字符串数组类型。我在文档中看到的唯一字符串类型是普通字符串,也许是null“string”:

--esn <EXTRA_KEY>
    Add a null extra. This option is not supported for URI intents. 
-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE>
    Add string data as a key-value pair. 

为了发送字符串数组而编写java应用程序是否可以避免?

有没有办法从命令行发送 String [] extra?

编辑以防这种方式无法实现,首选方法是什么?

3 个答案:

答案 0 :(得分:17)

老问题,但没有答案 adb shell am显示了所有选项,其中包括:

[--esa <EXTRA_KEY> <EXTRA_STRING_VALUE>[,<EXTRA_STRING_VALUE...]]
    (to embed a comma into a string escape it using "\,")

答案 1 :(得分:13)

对于其他寻找此功能的人来说,下面列出了额外的命令行标志

-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE>
--esn <EXTRA_KEY>
--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>
--ei <EXTRA_KEY> <EXTRA_INT_VALUE>
--el <EXTRA_KEY> <EXTRA_LONG_VALUE>
--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE>
--eu <EXTRA_KEY> <EXTRA_URI_VALUE>
--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>]
--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]
--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]
--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]

答案 2 :(得分:4)

要启动的行动和数据

adb shell am start -a "android.intent.action.VIEW" -d "http://www.google.com"

发送短信,mime类型和额外字符串

等操作
adb shell am start -a "android.intent.action.SEND" --es "android.intent.extra.TEXT" "Hello Intent" -t "text/plain"

启动/启动它的显式组件名称

adb shell am start -n "your.package.name/package.nameOf.Activity"

显式组件名称和额外字符串

adb shell am start -n your.AppPckage.name/package.nameOf.Activity --es "key" "value"

有很多--e |您可以在字符串中发送额外的数据 这里

- e表示仅额外数据

如果你使用 - 这意味着它将停止任何现有的活动,并使用额外的字符串数据正确启动活动。

根据您的需要,您可以选择任何一种组合。 有关更多参考,请使用@seal loyola answer