J'ai une application qui est supposée utiliser des commandes shell pour copier un fichier de la carte SD vers/system/media /. Il faudra root, et je suis en train de tester sur un appareil enraciné. J'utilise des runtimes pour exécuter les commandes du shell, mais ça ne marche pas. Voici ce que j'ai mes runtimesExécuter des commandes Shell via le code java sur Android?
public void RunAsRoot{String[] commands = {"sysrw", "rm /data/local/bootanimation.zip", "sysro"};{
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
for (String tmpCmd : commands) {
os.writeBytes(tmpCmd+"\n");
}
os.writeBytes("exit\n");
os.flush();
}
Mais mon logcat montre que deux d'entre eux ne se rejeté
07-30 03:14:11.112: WARN/su(3593): request rejected (10047->0 /system/bin/sh)
07-30 03:14:11.132: DEBUG/su(3592): 10047 com.bba.stormdroid executing 0 /system/bin/sh using shell /system/bin/sh : sh
07-30 03:14:11.152: WARN/su(3594): request rejected (0->0 /system/bin/sh)
07-30 03:14:11.182: WARN/su(3595): request rejected (0->0 /system/bin/sh)
07-30 03:14:11.202: WARN/su(3596): request rejected (0->0 /system/bin/sh)
07-30 03:14:11.242: DEBUG/su(3597): 10047 com.bba.stormdroid executing 0 /system/bin/sh using shell /system/bin/sh : sh
Ces deux semblent être les commandes de sysrw et sysro, mais l'application encore demande l'autorisation root lorsque je déclenche ce code. Je suis nouveau à travailler avec des choses root et je n'arrive pas à comprendre comment faire fonctionner ça.
puis-je obtenir un projet de travail de cet échantillon? –
Cela ne fonctionne pas pour moi et je ne reçois aucune exception FileNotFound ou quoi que ce soit en Java. De plus, SuperSU intercepte la requête root et je peux l'accorder pour que je sache que 'getRuntime()' fonctionne. Pour une raison quelconque, il ne me laissera pas manipuler des fichiers dans le dossier '/ system/media'. – anon58192932
Ah, il semble que sysrw et sysro sont des commandes inconnues. – anon58192932