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?
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) {
}
Devrait fonctionner sur la plupart des versions:
try {
Runtime.getRuntime().exec("su -c reboot");
} catch (IOException e) {
}
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.
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)
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");