¿Cómo se incluyen los "ampersand" en las URL de adb shell am start?
Utilizando
$ adb shell am start some://url
Puedo lanzar URL usando el gestor de actividades. Sin embargo, si incluyo varios parámetros de URL, todos excepto el primer parámetro se eliminan.
- Cómo matar a un emulador de un orphan android
- Adb del dispositivo Android siempre no autorizado en linux / Mac
- ¿Qué es el comando adb para enumerar todos los navegadores instalados en el dispositivo android?
- Fallo del protocolo adb utilizando install and push
- No es capaz de depurar la aplicación en Android Studio
Ejemplo:
$ adb shell am start http://www.example.com?param1=1¶m2=2
Devoluciones:
$ Starting: Intent { act=android.intent.action.VIEW dat=http://www.example.com?param1=1 }
Y param2 desaparece como cualquier cosa después de que un esperma sea ignorado. Me pregunto si hay algún carácter de codificación / escape para el & que evitará esto.
- El dispositivo Android no está conectado a USB para depurar (Android studio)
- El depurador androide no se detiene en puntos de interrupción
- ¿Cómo excluir ciertos mensajes por el nombre de TAG utilizando Android adb logcat?
- Eclipse dice que mis proyectos Android contienen errores, pero no hay
- Emulador de Android no se muestra en Visual Studio
- Instalar y ejecutar una aplicación en varios dispositivos con un solo clic bajo eclipse
- ¿Cómo funciona getbob y setprop?
- LG Revolution y Android Development
Use el carácter de escape \
:
$ adb shell am start "http://www.example.com?param1=1\¶m2=2"
La solución aceptada no funciona debido a un error en las herramientas de compilación android que puede realizar un seguimiento aquí: https://code.google.com/p/android/issues/detail?id=76026 . Una solución es la siguiente:
echo 'am broadcast -a com.android.vending.INSTALL_REFERRER -n <your package>/<broadcast-receiver> --es "referrer" "utm_source=test_source&utm_medium=test_medium&utm_term=test_term&utm_content=test_content&utm_campaign=test_name";exit'|adb shell
Para integrarlo en gradle puede utilizar la instrucción commandLine
commandLine "bash","-c","echo ..."
Citar el comando am...
!
Algo como lo siguiente debería funcionar (si no lo hace, intente una comilla doble):
adb shell 'am start http://www.example.com?param1=1¶m2=2'
Ya he publicado una solución provisional aquí: https://code.google.com/p/android/issues/detail?id=76026
Así que, aquí está la receta que implica la instrumentación.
Registre un BroadcastReceiver dentro de la instrumentación que escucha la acción com.example.action.VIEW.
IntentFilter intentFilter = new IntentFilter("com.example.action.VIEW"); intentFilter.addDataScheme("myschema"); intentFilter.addCategory(Intent.CATEGORY_BROWSABLE); Context.registerReceiver(new MyBroadcastReceiver(), intentFilter);
Sustituya el & comercial con% 26 (el uso puede substituirlo con cualquier cosa que usted quiere) y envía un com.example.action.VIEW intento.
Una vez recibida la intención BroadcastReceiver convierte% 26 de nuevo a esperma y envía una nueva intención con la acción deseada a su aplicación.
public final void onReceive(final Context context, final Intent intent) { intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse(intent.getDataString().replaceAll("%26", "&"))); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); }
Básicamente actúa como un proxy BroadcastReceiver.
- ¿Cómo hacer un icono en la barra de acción con el número de notificación?
- Recyclerview Adaptador y Glide – misma imagen cada 4-5 filas