Permissão: INJECT_EVENTS para instrumenation para outros apps
Eu sei que este não é o primeiro tópico sobre essa permissão, no entanto os outros não estão prontos ou não me ajudam.
O que eu preciso é inflar KeyEvents usando Instrumentação. Isso funciona muito bem e é insanamente mais rápido que o método shell ("input keyevent"). Mas se eu quiser injetar em outros aplicativos, eu vejo um SecurityException. Isso não me surpreendeu muito, então eu adicionei<uses-permission android:name="android.permission.INJECT_EVENTS" />
para o meu manifesto. O Eclipse para para depurar isso, informando que apenas os aplicativos do sistema podem usar essa permissão. Então eu compilei usando a ferramenta apk assinado e empurrei esse apk para / system / app. Reinicie e adivinhe
W/PackageManager( 3499): Not granting permission android.permission.INJECT_EVENTS to package com.<....> (protectionLevel=2 flags=0x8be45)
O aplicativo é direcionado para apenas um dispositivo especial. Então eu conheço todas as especificações e está enraizada. Massu
comandos de injeção demoram muito e o SuperUser é necessário. Eu adoraria fazer isso com Instrumentação ou talvez haja algo mais que eu deveria tentar?
O firmware não está escrito por mim, então não tenho a chave da plataforma.
Obrigado pela ajuda!
EDIT: Conseguiu as chaves da plataforma (O desenvolvedor usou o Google normal), assinado e alinhado, em seguida, empurrou o apk para / system / app. Também adicionadoandroid:sharedUserId="android.uid.system"
para o meu manifesto. Na inicialização, não há mais a mensagem de logcat. No entanto, quando eu quero enviar o keysync eu ainda catche oSecurityException
. Alguma ideia?
EDIT2: Aqui está um trecho deps
. Parece que o pacote não está listado como sistema
u0_a108 5241 2399 492044 48968 ffffffff 40113ab0 S com.mypackage