bel*_*lig 13 bash android json adb
我正试图通过ADB发送到设备的Android广播上发送JSON数据作为额外数据.但看起来到达设备的数据并不像预期的那样.
我执行的是什么:
adb shell am broadcast -a com.test.android.ACTION_TEST_FEATURE -n com.test.android/.receivers.TestsReceiver -e "notify" '{"debug": false, "title": "Application update!"}'
Run Code Online (Sandbox Code Playgroud)
我期望作为额外数据:
{"debug": false, "title": "Application update!"}
Run Code Online (Sandbox Code Playgroud)
我得到的额外数据:
"debug": false
Run Code Online (Sandbox Code Playgroud)
如果我{"debug": false "title": "Application update!"}作为额外数据发送,那么我得到{"debug": false "title": "Application update!"}额外的数据(注意缺少逗号).所以我认为它与我的bash的Brace Expansion有关,但关闭它并不能解决问题并且逃避括号或逗号无法正常工作.
有没有人知道我做错了什么?
Jer*_*101 20
你的解决方法是一个巨大的帮助!
它表明问题在于引用两个shell(主机加Android).壳牌引用是一个可怕的tarpit,但这里有一个严重的额外怪异.
在尝试使用"echo"命令后,我发现必须将adb shell的参数作为本地shell的单个参数引用,并且必须将JSON有效内容作为Android shell的单个参数引用.
这里有一个通用的解决方案(和它不需要洒\的-quoting ",!,{,和}在JSON文本字符):
adb shell "am broadcast -a com.test.android.ACTION_TEST_FEATURE -n com.test.android/.receivers.TestsReceiver -e notify '"'{"debug": false, "title": "Application update!"}'"'"
Run Code Online (Sandbox Code Playgroud)
图案: adb shell "am broadcast ... '"'JSON_TEXT'"'"
内部'标记对在本地引用JSON_TEXT,而外部对引用远程引用它.反过来"引用那个外部对.
好的,我刚刚找到了解决方案。我首先必须通过进入设备外壳adb shell,然后执行am broadcast -a com.test.android.ACTION_TEST_FEATURE -n com.test.android/.receivers.TestsReceiver --es "notify" '{"debug": false, "title": "Application update!"}'
| 归档时间: |
|
| 查看次数: |
4996 次 |
| 最近记录: |