web-dev-qa-db-fra.com

Comment créer des applications Android avec un accès root?

J'ai découvert qu'il y avait tellement d'applications qui nécessitaient un accès root. 

Comment ont-ils pu créer ces applications? Où ont-ils trouvé toute la ressource? Existe-t-il un document officiel sur l'accès root? Ou aura-t-il besoin d'un moyen de bidouille?

Et quels types d’accès nécessitant un accès root? Le proxy est-il l’un d’eux? Je n'ai trouvé aucune documentation sur l'accès au proxy où que ce soit.

=== UPDATE ===

Je pense que certaines personnes se sont trompées par ma question. Je sais que le téléphone doit être enraciné pour obtenir un accès root. Mais ce que je veux savoir, c'est quel type de services nécessite un accès root. Certains que je vois sans fil, l’autre consiste à vider le cache (faut-il même un accès root pour vider le cache?) Et les autres applications disponibles. Existe-t-il une liste des avantages que je tire de mon accès root?

28
Fugogugo

Vous devez installer su sur le téléphone (bien sûr). Détails ici: http://forum.xda-developers.com/showthread.php?t=682828

Et pour l'utiliser, c'est aussi simple que d'exécuter la commande su. Voici un exemple que j'utilise pour redémarrer le téléphone par programmation (copié à partir de cette réponse: Android 2.2: Redémarrer l'appareil par programmation )

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

Devrait fonctionner sur la plupart des versions:

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

La plupart des applications dépendent d'un script/d'une commande Shell portant le préfixe su.

Je ne pense pas qu'il y ait moyen de demander un autre contexte ou d'élever les privilèges dans l'API Android.

2
tamarintech

Habituellement, les applications enracinées utilisent simplement des commandes telles que "su ...", qu’elles ne peuvent pas utiliser sans accès root. Et avec ces exécutions de commandes, ils peuvent tout atteindre (c'est-à-dire supprimer une application système ou renforcer votre appareil Android)

0
gyurix

Utilisez cette fonction et utilisez-la n'importe où dans votre projet

 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();
    }
}

Utilisation de la fonction ci-dessus et utilisation de tout type de commande Shell avec les utilisateurs root

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