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

lux*_*har 3 powershell android json adb

我正在尝试向活动发送 JSON 参数,但似乎无法通过如下命令执行此操作:

adb shell am start -n <activity> -e argument_name '{"blah":"blah"}'
Run Code Online (Sandbox Code Playgroud)

一旦我的应用程序获取到 JSON 字符串内的任何双引号,它们就会被删除(“blah”:“blah” 变为 blah:blah)。我必须先启动 adb shell,然后运行 ​​am start,这样引号就不会被删除。这种情况发生在 Windows Powershell 上。

我尝试了Jerry101 此处建议的解决方案(即自定义引号处理),但这没有帮助。我不想先进入 shell,因为我想从 Powershell 脚本自动启动 Android 应用程序。这意味着运行 adb shell 命令,该命令会向 shell 发出命令,如上面的示例(作为单行代码)。

lux*_*har 6

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

adb shell am start -n <activity> -e argument_name '''{\"blah\":\"blah\"}'''
Run Code Online (Sandbox Code Playgroud)

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