這是我第一次在這裏發佈。我不確定這是否是提問這個問題的正確地點,但我似乎找不到其他更合適的地方。無論如何,這是我的問題。任務管理器的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