El envío de JSON como datos adicionales en una transmisión de Android a través de ADB se formatea incorrectamente
Estoy tratando de enviar datos JSON como extra en una transmisión de Android que envío a través de ADB al dispositivo. Pero parece que los datos que llegan al dispositivo no son los esperados.
Lo que ejecuto:
- ¿Cómo publicar datos en un Webservice usando JSON?
- JSONObject en JSONObject
- ¿Cómo analizar después de JSON usando GSON en android?
- Usando Gson para deserializar a Json en un singleton
- Enviando cadena UTF-8 usando HttpURLConnection
adb shell am broadcast -a com.test.android.ACTION_TEST_FEATURE -n com.test.android/.receivers.TestsReceiver -e "notify" '{"debug": false, "title": "Application update!"}'
Lo que espero como datos adicionales:
{"debug": false, "title": "Application update!"}
Lo que obtengo como datos adicionales:
"debug": false
Si envío {"debug": false "title": "Application update!"}
Como datos adicionales, entonces obtendré {"debug": false "title": "Application update!"}
Como datos adicionales (anotando la coma que falta) . Así que supongo que tiene algo que ver con Brace Expansión de mi bash, pero apagarlo no resuelve el problema y escapar de los tirantes o la coma no está funcionando.
¿Alguien tiene una idea de lo que estoy haciendo mal?
- cómo guardar datos de json en sqlite en android
- ¿Cómo puedo leer el archivo json de la tarjeta SD
- JSONObject to String Android
- Deserializar un objeto JSON con múltiples elementos dentro de él
- Dispositivo de Android de acceso de host local en la computadora portátil
- Recuperación de JSON desde URL en Android
- Cómo hacer un servicio web (preferiblemente usando PHP) que puede ser solicitado para obtener objetos JSON por la aplicación android
- Cómo analizar JSON en Android
Su solución fue una gran ayuda!
Indica que el problema está en citar a través de dos shells (host más Android). Shell cotizando es una horrible tarpit pero hay extra weirdness extra aquí.
Después de experimentar con comandos "echo", encontré que el argumento de shell de adb debe ser citado como un argumento único para el shell local y la carga útil de JSON debe ser citada como un solo argumento para el shell de Android.
He aquí una solución general (y no requiere aspersión \
-quoting de "
, !
, {
, Y }
chars en el texto 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!"}'"'"
Patrón: adb shell "am broadcast ... '"'JSON_TEXT'"'"
El par de marcas internas cita el JSON_TEXT localmente mientras el par externo lo cita remotamente. Ese par externo es a su vez "
-citado.
Ok, acabo de encontrar una solución. Primero tengo que entrar en el shell de dispositivos vía adb shell
y luego ejecutar am broadcast -a com.test.android.ACTION_TEST_FEATURE -n com.test.android/.receivers.TestsReceiver --es "notify" '{"debug": false, "title": "Application update!"}'
Sé que esto es un viejo post, pero tengo algunos pensamientos.
Después de la lucha para pasar datos a través de cmd y bash args, o subprocesos en el programa, he encontrado el uso de base64 para codificar json dumped datos es muy conveniente, sólo base64 decodificar y luego json cargas, no te preocupes por cita, espacio, ficha, nada.
- ¿Hay alguna forma de obtener el progreso de subida correctamente con HttpUrlConncetion?
- GetLine1Number () Devuelve blanco, no nulo