Uprawnienie: INJECT_EVENTS dla Instrumenation do innych aplikacji
Wiem, że nie jest to pierwszy wątek o tym zezwoleniu, jednak pozostałe wątki nie są ukończone lub nie pomagają mi.
Potrzebuję nadmuchać zdarzenia KeyEvent przy użyciu oprzyrządowania. To działa świetnie i jest szalenie szybsze niż metoda powłoki („input keyevent”). Ale jeśli chcę wstrzyknąć innym aplikacjom, przechwytuję wyjątek SecurityException. To nie zaskoczyło mnie zbytnio, więc dodałam<uses-permission android:name="android.permission.INJECT_EVENTS" />
do mojego manifestu. Eclipse przestaje debugować, informując mnie, że tylko aplikacje systemowe mogą korzystać z tego uprawnienia. Więc skompilowałem używając podpisanego narzędzia apk i pchnąłem to apk do / system / app. Ponownie uruchomiony i zgadnij co
W/PackageManager( 3499): Not granting permission android.permission.INJECT_EVENTS to package com.<....> (protectionLevel=2 flags=0x8be45)
Aplikacja jest przeznaczona tylko dla jednego specjalnego urządzenia. Znam więc wszystkie specyfikacje i jest zakorzeniony. Alesu
polecenia wtrysku trwają długo i wymagany jest SuperUser. Chciałbym to zrobić z Instrumentacją, a może jest coś jeszcze, co powinienem spróbować?
Oprogramowanie układowe nie jest napisane przeze mnie, więc nie mam klucza platformy.
Dzięki za pomoc!
EDYCJA: Dostałem klucze platformy (dev używał normalnych Google), podpisał i wyrównał, a następnie pchnął apk do / system / aplikacji. Dodano równieżandroid:sharedUserId="android.uid.system"
do mojego manifestu. W Boot nie ma już komunikatu logcat. Jednak gdy chcę wysłać synchronizator kluczy, nadal przechwytujęSecurityException
. Jakieś pomysły?
EDIT2: Oto fragment zps
. Wygląda na to, że pakiet nie jest wymieniony jako system
u0_a108 5241 2399 492044 48968 ffffffff 40113ab0 S com.mypackage