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 есть сомнения. Я получаю ту же проблему ... Не могли бы вы помочь мне решить проблему? выпуск .. –

ответ

4

Вы должны добавить разрешение в AndroidManifest.xml, как показано ниже.

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

Убедитесь, что только если ваше приложение подписано системным ключом os, оно позволит остановить другие приложения.

+3

Как сделать это подписано –

+0

@RohitTigga посмотреть -> http://stackoverflow.com/questions/3635101/how-to-sign-android-app- с-system-signature –

4

Я знаю, что это нить, но я хотел, чтобы инженеры, посетившие эту тему, имели самую последнюю информацию.

android.permission.FORCE_STOP_PACKAGES - подпись | привилегированное разрешение, поэтому он должен войти в системный раздел под приватным приложением. Итак, кто бы ни захотел иметь это разрешение в своем приложении, должен работать с соответствующим OEM, чтобы предварительно загрузить их в приватное приложение.

Начиная с Android О: Это разрешение вместе с именем App должен быть объявлен в одном из разрешений XML

privapp разрешения_доступа-platform.xml - AOSP приложения privapp разрешения_доступа-google.xml - Google Apps 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 'Итак, кто бы ни захотел это сделать разрешение в их приложении должно работать с соответствующим OEM-производителем, чтобы предварительно загрузить их в приложение priv-app', это не так, если вы работаете над созданием собственного ПЗУ, вы можете связать приложение внутри '/ system/apps', и ваше приложение будет получить системные разрешения. Его отличная игра, если вы хотите получить свое приложение на весь мир, тогда ваше утверждение верно. –

Смежные вопросы