1 votos

Ejecutar los comandos am en la terminal sin usar su

Android: JB 4.2.2

Estoy tratando de lanzar aplicaciones para Android desde el emulador de terminales usando el am comando. Cuando probé la aplicación de emulador de terminal del teléfono, me dio un error:-

java.lang.SecurityException: Permission Denial: startActivity asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
    at android.os.Parcel.readException(Parcel.java:1425)
    at android.os.Parcel.readException(Parcel.java:1379)
    at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:1906)
    at com.android.commands.am.Am.runStart(Am.java:494)
    at com.android.commands.am.Am.run(Am.java:109)
    at com.android.commands.am.Am.main(Am.java:82)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235)
    at dalvik.system.NativeStart.main(Native Method)

Si entro en modo root, entonces el comando am funciona. ¿Alguna idea de cómo conseguir am para lanzar el navegador sin hacer un su en el emulador terminal?

0 votos

Hola, en realidad cuando uso "am" sin Root el mensaje de error es: Permissio denied, app requested to run as user 2 but calling from user 0. I ggogled this, google results have the exact same err msg

4voto

Andy Brudtkuhl Puntos 1714

Sólo tienes que añadir el --user 0 opción a su am comando.

0 votos

Hola, su solución funcionó perfectamente. muchas gracias, u ver hasta ahora yo estaba wooried que todas mis aplicaciones de Android fueron lanzados por "am" como Root. Espero que no es el caso ahora?

1 votos

No, no es el caso. El "usuario" en la línea de comandos se refiere a los perfiles de usuario de Jelly Bean, no a los ID de usuario de Unix. Cuando se utiliza una sesión de terminal, es necesario especificar en qué perfil de usuario debe ejecutarse la aplicación.

0 votos

Entendido. gracias de nuevo

-2voto

Intenté iniciar el servicio desde la terminal y obtuve una salida similar. En mi caso, sólo añadí marcas de consulta y eso ayudó.

su -c 'am startservice -n "com.example.app/.YourSe-rvice" -e "extra' "value"'

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X