保留通过adb shell发送的JSON引号

时间:2017-02-03 04:00:59

标签: android json powershell adb

我正在尝试向活动发送一个JSON参数,看起来我不能通过如下命令这样做:

adb shell am start -n <activity> -e argument_name '{"blah":"blah"}'

当我的应用程序获取它们时,JSON字符串中的任何双引号都会被删除(“blah”:“blah”变成blah:blah)。我必须首先启动adb shell,然后运行am start,这样引号就不会被删除。这在Windows Powershell上发生。

我试过the solution suggested here by Jerry101 (i.e. custom handling of quotes),但这没有帮助。我不想首先进入shell,因为我想从Powershell脚本自动启动Android应用程序。这意味着运行adb shell命令会像上面的示例一样向shell发出命令(作为一行)。

2 个答案:

答案 0 :(得分:1)

正如评论中所指出的,你应该找到如何在Powershell中转义字符。

另一种方法是创建一个包含命令的文件

# file.sh
am start -n <activity> -e argument_name '{"blah":"blah"}'

然后

adb push file.sh /storage/self/primary/file.sh
adb shell sh /storage/self/primary/file.sh

答案 1 :(得分:1)

通过实验,我发现在初始单引号中我需要另一个单引号(并且每个单引号需要通过使用它们来转义)。双引号需要使用反斜杠字符进行转义。这是一个有效的例子:

adb shell am start -n <activity> -e argument_name '''{\"blah\":\"blah\"}'''

这适用于我的情况。接收方(Unity)看到双引号。