Executar comandos su do Android programaticamente não funciona

Eu preciso do meu aplicativo para executar algumassu comandos programaticamente (o telefone está enraizado).

Quando feito usando adb, os comandos funcionam.

Por exemplo:su -c "mkdir /sdcard/testdir" cria um diretório chamado "testdir" em / sdcard.

Quando ligo para:

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

Apenas segue em frente e nenhuma mudança acontece.

Eu tentei ler a entrada:

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

Mas ele não informa nada (o loop faz 0 iterações).

Alguém já enfrentou esse problema antes? Como pode ser resolvido? Escusado será dizer que os comandos não-su funcionam de maneira programática com esse método.

Nota: eu deimkdir como exemplo (eu sei que isso não requer necessariamente su). Eu preciso de muitos comandos variados para serem executados sobsu

Obrigado!

EDIT: quando eu ligosu -c "id" programaticamente, há saída que uid = 0.

questionAnswers(4)

yourAnswerToTheQuestion