android系统下,am broadcast命令可以用来发送广播,但是如果遇到广播内容含有json字符串,经常就会出各种问题。
正确的格式有两种:
(1)通过adb shell执行
adb shell "am broadcast ...--es key '"'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!"}'"'"
(2)先执行adb shell后
am broadcast ...--es "key" 'JSON_TEXT'
例如:am broadcast -a com.test.android.ACTION_TEST_FEATURE -n com.test.android/.receivers.TestsReceiver --es "notify" '{"debug": false, "title": "Application update!"}'
注意:
第二种方式与第一种方式的区别,关键在于--es后的key值是否加双引号,以及value值是用哪种引号括起来。如果用错了,广播还是无效。
参考:
Sending JSON as extra data in an android broadcast via ADB gets incorrectly formatted