2013-12-21 143 views
1

我嘗試使用forceStopPackage()殺死另一個應用程序。但我的應用程序顯示運行時錯誤Android權限拒絕:forceStopPackage()

錯誤

java.lang.SecurityException: Permission Denial: forceStopPackage() from pid=10377, uid=10200 requires android.permission.FORCE_STOP_PACKAGES 

在我的清單文件中添加以下權限。

<uses-permission android:name="android.permission.GET_TASKS" /> 
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> 

    <permission 
     android:name="android.permission.FORCE_STOP_PACKAGES" 
     android:permissionGroup="android.permission-group.SYSTEM_TOOLS" 
     android:protectionLevel="signature" 
     android:sharedUserId="android.uid.system" /> 

代碼

ActivityManager am = (ActivityManager) 
     context.getSystemService(Context.ACTIVITY_SERVICE); 
Method forceStopPackage = am.getClass(). 
      getDeclaredMethod("forceStopPackage", String.class); 
    forceStopPackage.setAccessible(true); 
    forceStopPackage.invoke(am, packageName); 

如何來解決這個問題。

+0

有ü嘗試在代碼完成(); – Amitsharma

+0

通過禁用項目屬性中的** ProtectedPermission **,您可以生成** apk ** –

+0

@Prasanth SI有一個疑問..我得到同樣的問題..請你幫我解決問題.. – 2014-02-05 16:08:14

回答

4

您必須在AndroidManifest.xml中添加權限,如下所示。

<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission> 

請確保只有當您的應用程序使用系統密鑰進行簽名操作系統纔會允許停止其他應用程序。

+3

如何使其簽署 –

+0

@RohitTigga來看看 - > http://stackoverflow.com/questions/3635101/how-to-sign-android-app- with-system-signature –

4

我知道這是一個古老的線程,但我想確保工程師訪問此線程有最新信息。

android.permission.FORCE_STOP_PACKAGES is signature | priviliged權限,因此需要在priv-app下進入系統分區。因此,想要在其應用中擁有此權限的任何人都必須與各自的OEM合作,以將其預加載到priv-app。需要與應用程序名稱以及此權限的權限XML的一個被宣佈

privapp的權限,platform.xml - AOSP應用 privapp的權限,google.xml - 谷歌企業應用套件:

在AndroidØ開始 privapp的權限-的.xml - OEM/ODM,OEM美聯社和其他

<privapp-permissions package="com.abc.android.xyz"> 
<permission name="android.permission.FORCE_STOP_PACKAGES"/> 
</privapp-permissions> 
+0

非常感謝!你知道如果自從Android O之後,privapp-permissions-xx.xml中的條目足以獲得授予的權限,或者將應用程序放入/ system/priv-app /仍然是必需的嗎? –

+1

privapp-permission-xxx.xml適用於進入/ system/priv-app /的應用程序。因此,將權限放在\ etc \ permission \文件夾中是不夠的 有關更多信息,請訪問https://source.android.com/devices/tech/config/perms-whitelist – siva

+0

@siva'所以無論誰想擁有這個如果您正在創建自己的ROM,則應用程序中的許可必須與各自的OEM一起工作才能將它們預加載到priv-app',否則您可以將應用程序捆綁在'/ system/apps'中,並且您的應用程序將獲得系統權限。 如果你想讓你的應用程序遍佈整個世界,那麼它是一個不同的球賽,那麼你的陳述是真實的。 –