Android权限拒绝:forceStopPackage()

Pra*_*h S 1 permissions android securityexception permission-denied

我试图使用forceStopPackage()杀死另一个应用程序.但我的应用程序显示运行时错

错误:

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

在我的清单文件中,我添加了以下权限.

<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" />
Run Code Online (Sandbox Code Playgroud)

代码:

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

如何解决问题.

小智 5

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

<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission>
Run Code Online (Sandbox Code Playgroud)

确保仅当您的应用程序使用系统密钥进行签名时,操作系统才允许停止其他应用程序。

  • 如何使其签名 (3认同)

小智 5

我知道这是旧线程,但我想确保访问此线程的工程师有最新信息.

android.permission.FORCE_STOP_PACKAGES是签名| 私有权限,因此它需要进入priv-app下的系统分区.因此,无论谁想要在他们的应用程序中拥有此权限,都必须与相应的OEM合作,将它们预先加载到priv-app.

从Android O开始:此权限以及App名称需要在其中一个权限xml中声明

privapp的权限,platform.xml - AOSP应用privapp的权限,google.xml - 谷歌Apps的privapp的权限-的.xml - OEM/ODM,OEM美联社及其他

<privapp-permissions package="com.abc.android.xyz">
<permission name="android.permission.FORCE_STOP_PACKAGES"/>
</privapp-permissions> 
Run Code Online (Sandbox Code Playgroud)