Во-первых, мы можем понять основы правильно. Android работает под ядром Linux. Теперь, если вам нужно запустить на нем свой процесс с привилегиями суперпользователя (запустить его как root), единственный способ - выполнить ваш процесс через command line
, потому что это единственный способ, которым вы можете напрямую взаимодействовать с ядром. Также вам нужно использовать su
перед выполнением любой команды. Также, как упомянул Крис в своем комментарии к 1-му ответу
Process process = Runtime.getRuntime().exec("su");
почти ничего не добьется. Он просто запросит привилегию супер использования с помощью диалога. Что вы можете сделать, это вместо того, чтобы просто выполнить su
, вы можете выполнить свой процесс с помощью команды su следующим образом:
Process process = Runtime.getRuntime().exec(new String[] { "su", "-c", yourCommand});
Опция -c
Среди наиболее часто используемых опций su есть -c, который сообщает su to execute the command that directly follows it on the same line
. Такая команда выполняется как новый пользователь, и затем окно терминала или консоль, из которой был запущен su, немедленно возвращается к учетной записи бывшего пользователя после завершения выполнения команды или после закрытия любой запущенной программы. ( Подробнее )
Альтернативный вариант
Альтернативой вышеприведенному методу является еще один способ, который может работать - использовать командную строку для копирования приложения в каталог /system/app/
. Тогда ваше приложение будет автоматически запускаться с правами суперпользователя (так же, как системные приложения)