android - Permiso: INJECT_EVENTS para instrumentar a otras aplicaciones
permissions code-injection (1)
Sé que este no es el primer hilo acerca de este permiso, sin embargo, los otros no están terminados o no me ayudan.
Lo que necesito es inflar KeyEvents usando Instrumentation. Eso funciona muy bien y es increíblemente más rápido que el método shell ("input keyevent"). Pero si quiero inyectar a otras aplicaciones, veo una SecurityException. Eso no me sorprendió demasiado, así que agregué <uses-permission android:name="android.permission.INJECT_EVENTS" />
a mi manifiesto. Eclipse se detiene para depurar esto diciéndome que solo las aplicaciones del sistema pueden usar este permiso. Así que compilé usando la herramienta apk firmada y empujé ese apk a / system / app. Reiniciado, y adivina qué
W/PackageManager( 3499): Not granting permission android.permission.INJECT_EVENTS to package com.<....> (protectionLevel=2 flags=0x8be45)
La aplicación está dirigida solo a un dispositivo especial. Entonces conozco todas las especificaciones y está rooteado. Pero su
comandos de inyección tardan mucho y se requiere SuperUser. Me encantaría hacer eso con Instrumentation o tal vez hay algo más que debería probar?
El firmware no está escrito por mí, así que no tengo la clave de la plataforma.
¡Gracias por tu ayuda!
EDITAR: Obtuve las claves de la plataforma (el desarrollador usó las normales de Google), firmó y alineó, luego empujó la aplicación a / system / app. También se agregó android:sharedUserId="android.uid.system"
a mi manifiesto. En Boot, ya no existe el mensaje de logcat. Sin embargo, cuando quiero enviar el keysync sigo capturando SecurityException
. ¿Algunas ideas?
EDIT2: Aquí hay un extracto de ps
. Parece que el paquete no está listado como sistema
u0_a108 5241 2399 492044 48968 ffffffff 40113ab0 S com.mypackage
Actualizar
Use la herramienta de señalización que se encuentra aquí , luego continúe y lea en mi blog.Ok, obtuve las claves de plataforma adecuadas y funciona como un encanto ahora! Firmé usando http://forum.xda-developers.com/showthread.php?t=1125626 y reemplacé (renombré el signo .... por la tecla de prueba ....) las claves de prueba dentro de la carpeta signare con
signapk-key.platform.x509.pem
signapk-key.platform.pk8
(Google para ellos)
También asegúrese de zipalign y luego copiar a / system / app. Instalar .apk de la manera normal NO es posible, ya que está marcado como aplicación del sistema.