Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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:

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?

  • ¿Existe un límite de longitud de la clave (cadena) en el objeto JS?
  • Serializador personalizado - deserializador utilizando GSON para una lista de BasicNameValuePairs
  • ¿Cómo puedo deserializar un objeto JSON pero mantener un campo específico como una cadena en lugar de un objeto anidado?
  • Volley JSONException: Fin de la entrada en el carácter 0 de
  • Android Parse JSON atascado en obtener tarea
  • Código de respuesta inesperado 500 para el método POST
  • Best REST Client Framework / Utilidad en Android
  • Publicar datos de objetos de Json para obtener la respuesta de array de Json utilizando volley en android
  • 3 Solutions collect form web for “El envío de JSON como datos adicionales en una transmisión de Android a través de ADB se formatea incorrectamente”

    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.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.