Как я могу получить права root через Android SDK?
Я изучаю Android-программирование, и я хочу создать приложение, которое должно запускаться как root. Логичным было бы добавить разрешение root в манифесте Android.
Я видел эту ссылку в документации и особенно отметил разрешение FACTORY_TEST
:
public static final String FACTORY_TEST
Поскольку: Уровень API 1
Запуск в качестве теста производителя приложение, работающее как пользователь root. Доступно только тогда, когда устройство работает в тестовом режиме производителя. Постоянное значение: "Android.permission.FACTORY_TEST"
Это лучший способ?
Если это невозможно с помощью SDK, как я могу заставить работать "root"?
Ответы
Ответ 1
Что вам нужно сделать, это что-то вроде:
Process root = Runtime.getRuntime().exec("su");
Это заставляет SuperUser показывать, что позволяет вам разрешать или блокировать его из корневого доступа. Этот подход может не работать, если пользователь не внедрен. Здесь можно проверить его.
Ответ 2
Сначала мы дадим основаниям право. 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
Среди наиболее часто используемых из нескольких вариантов - -c, который сообщает su to execute the command that directly follows it on the same line
. Такая команда выполняется как новый пользователь, а затем оконное окно или консоль, из которых был запущен su, немедленно возвращается в учетную запись прежнего пользователя после завершения выполнения команды или после того, как какая-либо программа, которую она запустила, была закрыта. (Подробнее)
Альтернативный вариант
Альтернативный метод выше, другой способ, который может работать, - использовать командную строку для копирования приложения в каталог /system/app/
. Затем ваше приложение будет запускаться автоматически с правами root (такими же, как в системных приложениях) (Подробнее о разделах Android)
Ответ 3
В SDK не предусмотрен способ запуска приложения с правами root.