Permiso: INJECT_EVENTS para Instrumenation a otras aplicaciones

Sé que este no es el primer hilo sobre este permiso, sin embargo los otros no están terminados o no me ayudan.

Lo que necesito es inflar KeyEvents usando Instrumentación. Que funciona muy bien y es increíblemente más rápido que el shell ("input keyevent") método. Pero si quiero inyectarme a otras aplicaciones atraparé una excepción de seguridad. Eso no me sorprendió mucho, así que añadí <uses-permission android:name="android.permission.INJECT_EVENTS" /> a mi manifiesto. Eclipse se detiene para depurar esto diciéndome que sólo las aplicaciones del sistema pueden usar este permiso. Así que compilé usando la herramienta firmada apk 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 sólo está destinada a un dispositivo especial. Así que sé todas las especificaciones y está enraizada. Pero los comandos de inyección de su toman mucho tiempo y SuperUser es necesario. Me encantaría hacer eso con Instrumentación o tal vez hay algo más que debo probar?

El firmware no está escrito por mí, así que no tengo la clave de la plataforma.

¡Gracias por tu ayuda!

EDIT: Consiguió las llaves de la plataforma (el dev utilizó las normales de Google), firmado y alineado, luego empujó el apk a / system / app. También se agregó android:sharedUserId="android.uid.system" a mi manifiesto. En Boot ya no existe el mensaje logcat. Sin embargo, cuando quiero enviar el keysync todavía catche la 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

Utilice el signtool que se encuentra aquí , luego siga adelante y siga leyendo en mi blog.


Ok, tengo las llaves de la plataforma derecha y funciona como un encanto ahora! Firmé usando http://forum.xda-developers.com/showthread.php?t=1125626 y reemplazado (renombrado el signo …. a testkey ….) los trykeys 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 el .apk de la manera normal NO es posible ya que se marca como aplicación del sistema.

  • Solicitar permisos de Android M de la actividad con noHistory = "true" y / o showOnLockScreen = "true"
  • ¿Cómo comprobar si se da el permiso "android.permission.PACKAGE_USAGE_STATS"?
  • Bypass android usb host permiso diálogo de confirmación
  • Phonegap permisos de Android, config.xml y complementos
  • Permiso ATTR {idVendor} para dispositivos USB en linux menta para utilizar tabla mobii protab2 XXL
  • ¿Por qué sendTextMessage requiere el permiso READ_PHONE_STATE?
  • Obtener el permiso de Android dynamiclly
  • Los teléfonos de Redmi no piden permisos de SMS y por lo tanto no leen sms
  • ¿Cómo puede la aplicación del sistema ubicada en / system / app tener permiso del sistema en Android 4.4 KitKat construir?
  • Android INJECT_EVENTS permiso
  • Cómo recibir una emisión cuando la aplicación se instala o se elimina
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.