这是我第一次在这里发布。我不确定这是否是提问这个问题的正确地点,但我似乎找不到其他更合适的地方。无论如何,这是我的问题。任务管理器的ActivityManager.forceStopPackage()
据我所知,API ActivityManager.forceStopPackage()
是一个内部的,只能从系统进程调用。然而,它令我感到困惑的是,我的摩托罗拉atrix手机上的内置任务管理器应用程序(包名为com.motorola.PerformanceManager
)可以直接调用它,而不是一个系统进程。我验证了两件事。
首先,它是非系统进程从ps
命令:
app_64 13681 1379 170788 29820 ffffffff 00000000 S com.motorola.PerformanceManager
其次,它确实要求从ODEX文件ActivityManager.forceStopPackage()
API(反编译成smali,然后进入DEX,然后到Java)。从smali代码中,它已经清楚它调用了这个API。
我也检查了它的AndroidManifest.xml
文件,这对我来说似乎没什么特别的(论坛错误地认识到内容为URL并且阻止我发布它们)。
清单文件确实包含android.permission.FORCE_STOP_PACKAGES
权限,该权限应该是系统权限。即使拥有此权限,非系统应用仍然会获得权限拒绝错误。我尝试使用反射访问这个API与android.permission.FORCE_STOP_PACKAGES
权限,但仍然得到运行时错误。
现在,内置的任务管理器应用程序如何在不成为系统进程的情况下调用内部API。 一种可能性是应用程序使用相同的平台私钥签名。但是,我不确定我如何验证。此外,它仍然是一个系统进程,在清单文件中有额外的描述。
希望有人能回答我的问题。谢谢。
我有同样的问题,如:java.lang.SecurityException异常:权限拒绝: \t \t forceStopPackage()从PID = 20914,UID = 10073所需的Android版本.permission.FORCE_STOP_PACKAGES ,,,可以请你帮我解决这个问题 – 2014-02-05 16:09:42