Esta es la primera vez que publico aquí. No estoy seguro de si este es el lugar correcto para hacer esta pregunta, pero parece que no encuentro otros lugares más apropiados. Aquí está mi pregunta de todos modos.ActivityManager.forceStopPackage() desde el Administrador de tareas
Entiendo que la API ActivityManager.forceStopPackage()
es interna y solo se puede llamar desde el proceso del sistema. Sin embargo, me desconcierta que la aplicación integrada Task Manager (con el nombre del paquete com.motorola.PerformanceManager
) en mi teléfono motorola atrix puede llamar directamente sin ser un proceso del sistema. Hay dos cosas que verifiqué.
En primer lugar, es un proceso no es del sistema de ps
comando:
app_64 13681 1379 170788 29820 ffffffff 00000000 S com.motorola.PerformanceManager
En segundo lugar, de hecho, llama al ActivityManager.forceStopPackage()
API desde su archivo odex (decompiled en smali, luego en Dex y, a continuación, en java). Desde el código smali, ya está claro que llama a esta API.
También verifiqué su archivo AndroidManifest.xml
que no parece ser nada especial para mí (el foro reconoce erróneamente el contenido como URL y me impide publicarlo).
El archivo de manifiesto incluye el permiso android.permission.FORCE_STOP_PACKAGES
que se supone que es uno del sistema. Una aplicación que no sea del sistema aún recibirá un error de denegación de permiso incluso con este permiso. Intenté usar la reflexión para acceder a esta API con el permiso android.permission.FORCE_STOP_PACKAGES
, pero todavía obtengo el error de tiempo de ejecución.
Ahora, ¿cómo puede la aplicación Task Manager integrada llamar a la API interna sin ser un proceso del sistema? Una posibilidad es que la aplicación esté firmada con la misma clave privada de plataforma. Sin embargo, no estoy seguro de cómo puedo verificar eso. Además, todavía se supone que es un proceso del sistema con descripciones adicionales en el archivo de manifiesto.
Espero que alguien pueda responder mi pregunta. Gracias.
i tienen el mismo problema como: java.lang.SecurityException: Permiso Negación: \t \t forceStopPackage() desde pid = 20914, uid = 10073 requiere Android .permission.FORCE_STOP_PACKAGES ,,, ¿podría ayudarme a resolver este problema? –