[Android] Berechtigung: INJECT_EVENTS für Instrumentierung in anderen Apps


Answers

Question

Ich weiß, dass dies nicht der erste Thread über diese Erlaubnis ist, aber die anderen sind nicht fertig oder helfen mir nicht.

Was ich brauche, ist KeyEvents mithilfe von Instrumentation aufzublasen. Das funktioniert super und ist wahnsinnig schneller als die Shell-Methode ("Input KeyEvent"). Aber wenn ich in andere Apps injizieren möchte, erwische ich eine SecurityException. Das hat mich nicht sehr überrascht, also habe ich <uses-permission android:name="android.permission.INJECT_EVENTS" /> zu meinem Manifest hinzugefügt. Eclipse beendet das Debuggen und sagt mir, dass nur System-Apps diese Berechtigung verwenden können. Also kompilierte ich mit dem signierten apk-Tool und schob diese apk nach / system / app. Neustart, und rate mal was

W/PackageManager( 3499): Not granting permission android.permission.INJECT_EVENTS to package com.<....> (protectionLevel=2 flags=0x8be45) 

Die App ist nur für ein bestimmtes Gerät vorgesehen. So kenne ich alle Spezifikationen und es ist verwurzelt. Aber su Injektion Befehle dauern zu lange und SuperUser ist erforderlich. Ich würde das gerne mit Instrumentation machen oder vielleicht sollte ich etwas anderes ausprobieren?

Die Firmware wird nicht von mir geschrieben, daher habe ich den Plattformschlüssel nicht.

Danke für Ihre Hilfe!

EDIT: Bekam die Plattform-Schlüssel (der Entwickler verwendete die normalen Google-Einsen), signiert und ausgerichtet, dann schob die apk nach / system / app. Außerdem hinzugefügt android:sharedUserId="android.uid.system" zu meinem Manifest. Beim Booten gibt es keine Logcat-Nachricht mehr. Wenn ich jedoch den keysync senden möchte, schnappe ich noch die SecurityException . Irgendwelche Ideen?

EDIT2: Hier ist ein Auszug aus ps . Scheint so, als wäre das Paket nicht als System aufgelistet

u0_a108   5241  2399  492044 48968 ffffffff 40113ab0 S com.mypackage