Как получить root-права через Android SDK? - PullRequest
22 голосов
/ 14 марта 2011

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

Я видел эту ссылку в документации и особенно отметил разрешение FACTORY_TEST :

public static final String FACTORY_TEST

С: Уровень API 1

Запуск в качестве теста производителя приложение, работающее от имени пользователя root. Доступно только когда устройство работает в тестовом режиме производителя. Постоянное значение: "Android.permission.FACTORY_TEST"

Это лучший способ?

Если невозможно использовать SDK, как я могу заставить работать «корневое» приложение?

Ответы [ 3 ]

30 голосов
/ 14 марта 2011

Что вам нужно сделать, это что-то вроде:

Process root = Runtime.getRuntime().exec("su");

Это заставляет SuperUser показывать, что позволяет вам разрешить или заблокировать его от root-доступа. Этот подход может не работать, если пользователь не имеет прав root. Здесь - это способ проверить это.

14 голосов
/ 28 декабря 2013

Во-первых, мы можем понять основы правильно. 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/. Тогда ваше приложение будет автоматически запускаться с правами суперпользователя (так же, как системные приложения)

9 голосов
/ 14 марта 2011

SDK не предлагает способ запуска приложения от имени пользователя root.

...