To jest mój pierwszy wpis tutaj. Nie jestem pewien, czy to właściwe miejsce, aby zadać to pytanie, ale nie wydaje mi się, żebym znalazł inne, bardziej odpowiednie miejsca. Oto moje pytanie.ActivityManager.forceStopPackage() od Task Manager
Rozumiem, że interfejs API ActivityManager.forceStopPackage()
jest wewnętrznym i można go wywołać tylko z procesu systemowego. Jednak zastanawia mnie, że wbudowana aplikacja Task Manager (o nazwie pakietowej com.motorola.PerformanceManager
) na moim telefonie może wywoływać ją bezpośrednio, nie będąc procesem systemowym. Są dwie rzeczy, które zweryfikowałem.
Po pierwsze, jest to proces niesystemowym z poleceniem ps
:
app_64 13681 1379 170788 29820 ffffffff 00000000 S com.motorola.PerformanceManager
drugie, rzeczywiście wywołuje ActivityManager.forceStopPackage()
API z jego ODEX pliku (dekompilowana do maĹ,ych, a następnie do dex, a następnie w Javie). Z kodu smali jest już jasne, że nazywa ten API.
Sprawdziłem również jego plik AndroidManifest.xml
, który wydaje mi się niczym szczególnym (forum błędnie rozpoznaje treść jako adresy URL i uniemożliwia mi ich opublikowanie).
Plik manifestu zawiera uprawnienie android.permission.FORCE_STOP_PACKAGES
, które ma być systemowe. Aplikacja niesystemowa nadal będzie otrzymywała błąd odmowy przyznania pozwolenia, nawet jeśli otrzyma to uprawnienie. Próbowałem użyć odbicia, aby uzyskać dostęp do tego interfejsu API z uprawnieniem android.permission.FORCE_STOP_PACKAGES
, ale nadal pojawia się błąd środowiska wykonawczego.
Teraz, w jaki sposób wbudowana aplikacja Menedżer zadań może wywoływać wewnętrzny interfejs API, nie będąc procesem systemowym. Jedna z możliwości polega na tym, że aplikacja jest podpisana tym samym kluczem prywatnym platformy. Jednak nie jestem pewien, jak mogę to zweryfikować. Co więcej, nadal jest to proces systemowy z dodatkowymi opisami w pliku manifestu.
Mam nadzieję, że ktoś może odpowiedzieć na moje pytanie. Dzięki.
Mam ten sam problem jak: java.lang.SecurityException: Permission Denial: \t \t forceStopPackage() z pid = 20914, uid = 10073 Wymaga Androida .permission.FORCE_STOP_PACKAGES ,,, czy możesz mi pomóc rozwiązać ten problem? –