Подтвердить что ты не робот

Убить другое приложение на Android?

Я пытаюсь убить другое приложение. Но этот код не может убить мое другое приложение. Я знаю, что убить другое приложение - плохая идея. Но у меня есть цель обучения, и я пытался убить. Моя часть кода:

Button runningApp = (Button) findViewById(R.id.runningApp);
runningApp.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        String nameOfProcess = "com.example.filepath";
        ActivityManager  manager = (ActivityManager)ApplicationActivity.this.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> listOfProcesses = manager.getRunningAppProcesses();
        for (ActivityManager.RunningAppProcessInfo process : listOfProcesses)
        {
            if (process.processName.contains(nameOfProcess))
            {
                Log.e("Proccess" , process.processName + " : " + process.pid);
                android.os.Process.killProcess(process.pid);
                android.os.Process.sendSignal(process.pid, android.os.Process.SIGNAL_KILL);
                manager.killBackgroundProcesses(process.processName);
                break;
            }
        }
    }
});

Я добавил Разрешения, и они:

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

Каждый раз, когда я вижу LogCat, конкретное приложение работает в фоновом режиме. Где я ошибаюсь?

4b9b3361

Ответ 1

Вы можете только убить процесс с таким же идентификатором пользователя, как тот, который совершает убийство. Если вы пытаетесь убить свой собственный процесс, он должен работать. В противном случае вы не сможете этого сделать (если у вас нет корневого устройства, а ваше приложение имеет привилегии root).

Ответ 2

Если ваше устройство внедрено и ваше приложение находится в /system/app, вы можете убить другое приложение, отключив его и включив его через:

pm.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
pm.setApplicationEnabledSetting(packageName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);

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