Intereting Posts
Макет отсутствует 'Org.apache.http.HttpEntity' устарел. Как решить эту ошибку в студии Android? WhereNear query не работает должным образом в Parse Заполнение счетчика непосредственно в макете xml Использование String selectionArgs в SQLiteDatabase.query () Создайте диалоговое окно «Выбор номера» Байт байта Android для Bitmap Как сделать Как сообщить пользователю, что ему нужно установить другое приложение, от которого зависит мое приложение Как использовать Android-аудио с низкой задержкой Синхронизация данных приложений между iOS и Android Загрузка html-файла в веб-обозреватель в Android-папке с помощью Android Studio Как настроить модуль библиотеки Android и называться несколькими проектами в Android Studio? Дифференцирование отладочной и производственной сборки приложения для Android Android: изменить стандартное домашнее приложение Android: Как создать каталог на SD-карте и скопировать файлы из / res / raw?

Отправка JSON в качестве дополнительных данных в широковещательной передаче по протоколу Android через ADB неправильно отформатирована

Я пытаюсь отправить данные JSON в качестве дополнительной информации на Android-трансляцию, которую я отправляю через ADB на устройство. Но похоже, что данные, поступающие на устройство, не так ожидаются.

Что я выполняю:

adb shell am broadcast -a com.test.android.ACTION_TEST_FEATURE -n com.test.android/.receivers.TestsReceiver -e "notify" '{"debug": false, "title": "Application update!"}' 

Что я ожидаю в качестве дополнительных данных:

 {"debug": false, "title": "Application update!"} 

Что я получаю за дополнительные данные:

 "debug": false 

Если я отправляю {"debug": false "title": "Application update!"} качестве дополнительных данных, тогда я получаю {"debug": false "title": "Application update!"} Как дополнительные данные (отмечая недостающую запятую) , Поэтому я предполагаю, что это имеет какое-то отношение к Brace Expansion моего bash, но его отключение не решает проблему и не ускользает от фигурных скобок или запятая не работает.

Кто-нибудь знает, что я делаю неправильно?

Solutions Collecting From Web of "Отправка JSON в качестве дополнительных данных в широковещательной передаче по протоколу Android через ADB неправильно отформатирована"

Ваш обходной путь был огромной помощью!

Это указывает на то, что проблема заключается в цитировании через две оболочки (хост плюс Android). Оболочка Shell – ужасный брезент, но здесь есть серьезная лишняя странность.

После экспериментов с командами «echo» я обнаружил, что аргумент оболочки adb должен быть указан как один аргумент локальной оболочки, а полезная нагрузка JSON должна быть указана как один аргумент для оболочки 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!"}'"'" 

Образец: 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!"}'

Я знаю, что это старый пост, но у меня есть мысли.

После борьбы за передачу данных через cmd и bash args, или подпроцесс в программе, я нашел, что использование base64 для кодирования json-данных сбрасываемых данных чрезвычайно удобно, просто base64-декодирует, а затем json загружает, не беспокоится о цитате, пробеле, вкладке и т. Д.