Убить процесс на Android с помощью pid
Я нашел некоторые похожие вопросы вокруг 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, устройство было внедрено.
Во-первых, это, вероятно, не очень хорошая идея назвать su
таким образом. (каждый вариант pid, вероятно, должен быть разрешен любым приложением, управляющим вашими вызовами в su
). Большинство людей называют sh
а затем записывают команду, которую они хотят выполнить.
Ошибка, которую я сразу заметил, заключается в том, что ваш -9
должен находиться в другой части массива. Например:
Runtime.getRuntime().exec(new String[]{"su", "-c", "kill", "-9", ""+pid});
Изменить: На самом деле, похоже, это должно сработать. Я забыл, что аргумент -c
должен быть всей командой.
Вы можете найти пример кода здесь для выполнения команды, как корень на Android.
Другая вещь, которую вы можете сделать, - это указать полный путь к su
и kill
двоичные файлы. (что может быть специфичным для телефона, поэтому будьте осторожны)
Редактировать 2: Интересно, если вы столкнулись с этой проблемой. Какую версию Android вы используете?