Как создавать приложения для Android с root-доступом?

Я обнаружил, что существует так много приложений, которым требуется root-доступ.

Как они смогли создать эти приложения? Где они нашли весь ресурс? Есть ли официальный документ о root доступе? Или понадобится какой-нибудь хакерский способ?

А какие виды доступа требуются от root-доступа? Является ли прокси одним из них? Я не нашел никакой документации о доступе к прокси.

=== ОБНОВЛЕНИЕ ===

Я думаю, что некоторые люди ошибаются по моему вопросу. Я знаю, что телефон должен быть рутирован для получения root-доступа. но я хочу выяснить, какие сервисы нужны для root-доступа? Некоторым я вижу беспроводную привязку, другой - очистить кеш (нужен ли вообще доступ с правами root только для очистки кеша?), А другие приложения там. is there any list of what I kind of advantage I get from root access?

4 ответа

Решение

Вам необходимо установить su в телефоне (конечно). Подробности здесь: http://forum.xda-developers.com/showthread.php?t=682828

И использовать его так же просто, как запустить команду su. Вот пример, который я использую для перезагрузки телефона программно (скопировано из этого ответа: Android 2.2: перезагрузка устройства программно)

try {
    Runtime.getRuntime().exec("su");
    Runtime.getRuntime().exec("reboot");
} catch (IOException e) {
} 

Должно работать на большинстве версий:

try {
    Runtime.getRuntime().exec("su -c reboot");
} catch (IOException e) {
} 

Многие приложения зависят от сценария / команды оболочки с префиксом su.

Я не думаю, что есть способ запросить другой контекст или повысить привилегии в Android API.

Используйте эту функцию и используйте ее в любом месте вашего проекта

 public static void sudo(String... strings) {
    try {
        Process su = Runtime.getRuntime().exec("su");
        DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

        for (String s : strings) {
            outputStream.writeBytes(s + "\n");
            outputStream.flush();
        }

        outputStream.writeBytes("exit\n");
        outputStream.flush();
        try {
            su.waitFor();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        outputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Использование вышеуказанной функции и использование в ней любого типа команд оболочки с правами пользователя root

  sudo("iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080");

Обычно рутированные приложения просто используют команды типа "su ...", которые они не могут использовать без root-доступа. И с помощью этих командных команд они могут достичь всего (например, удалить системное приложение или повысить ваше устройство Android)

Другие вопросы по тегам