Убить процесс на Android с помощью pid

76
10

Я нашел некоторые похожие вопросы вокруг stackoverflow, но я не нашел тот, который работает в моем случае.

До сих пор я пытался:

    Runtime.getRuntime().exec(new String[]{"su","-c","kill -9 "+pid});
//am.killBackgroundProcesses(pkgName);
//android.os.Process.killProcess(pid);

Хотя, если я набрал su -c kill -9 pid из adb, это сработало! Почему бы не работать программно?

Нужно ли мне делать какие-либо permission в AndroidManifest.xml?

Btw, устройство было внедрено.

спросил(а) 2021-01-19T16:57:31+03:00 2 месяца, 3 недели назад
1
Решение
61

Во-первых, это, вероятно, не очень хорошая идея назвать su таким образом. (каждый вариант pid, вероятно, должен быть разрешен любым приложением, управляющим вашими вызовами в su). Большинство людей называют sh а затем записывают команду, которую они хотят выполнить.

Ошибка, которую я сразу заметил, заключается в том, что ваш -9 должен находиться в другой части массива. Например:

Runtime.getRuntime().exec(new String[]{"su", "-c", "kill", "-9", ""+pid});

Изменить: На самом деле, похоже, это должно сработать. Я забыл, что аргумент -c должен быть всей командой.

Вы можете найти пример кода здесь для выполнения команды, как корень на Android.

Другая вещь, которую вы можете сделать, - это указать полный путь к su и kill двоичные файлы. (что может быть специфичным для телефона, поэтому будьте осторожны)

Редактировать 2: Интересно, если вы столкнулись с этой проблемой. Какую версию Android вы используете?

ответил(а) 2021-01-19T16:57:31+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема