Android - exécution de la ligue des commandes par programme ne fonctionne pas

J'ai besoin de mon application pour effectuer certaines su commandes par programme (le téléphone est enracinée).

Lorsque le fait à l'aide de la bad, les commandes de travail.

Par exemple:
su -c "mkdir /sdcard/testdir" crée un répertoire appelé "testdir" dans /sdcard.

Quand je l'appelle:

    p = Runtime.getRuntime().exec("su -c \"mkdir /sdcard/testdir\"");
    p.waitFor();

Elle se déplace sur et aucun changement ne se produit.

J'ai essayé la lecture de l'entrée:

DataInputStream dis = new DataInputStream(p.getInputStream());
    while((temp = dis.readLine())!=null)
        Log.d(ctx.TAG,"shell:"+temp);

Mais il rapporte rien (boucle n'0 itérations).

Quelqu'un a jamais été confronté à ce problème avant? Comment peut-il être résolu?
Inutile de journée, non-su commandes n'travail en programmant avec cette méthode.

Remarque: j'ai donné mkdir comme un exemple (je sais que ça ne nécessite pas forcément su). J'ai besoin de beaucoup de diverses commandes à exécuter dans le cadre su

Merci!

EDIT: quand je l'appelle su -c "id" par programmation, il y a une sortie qui uid=0.

Avez-vous résolu ce problème? face à la même question ici exactement

OriginalL'auteur LoneDuck | 2015-04-20