Moment de l'exécution.exec() : Reboot dans Android?

Je suis à la recherche d'une solution qui peut être utilisé pour redémarrer un dispositif enracinée. Je jknow que le redémarrage de l'appareil est de très mauvaise conception pour l'utilisateur, comme indiqué ici, et il n'est pas vraiment pour une application. Le but principal est de redémarrer le téléphone lors de mes tests (je travaille sur une vidéo de chat, et parfois j'ai besoin de redémarrer quand tout va vers le sud)

J'ai observé que le redémarrage d'un téléphone est de loin beaucoup plus rapidement à l'aide de redémarrer dans un terminal (adb shell ou ConnectBot par exemple) que de passer par l'habitude de le redémarrer avec le ACTION_REBOOT, que je ne peux pas utiliser de toute façon.

Pour le moment, je suis en mesure d'obtenir les privilèges de super-utilisateur, avec

Process root = Runtime.getRuntime().exec("su");

Mais je ne peux pas faire le reboot. J'ai essayer sur un G1 (HTC) et sur un Galaxy S (Samsung), sans succès. Je trouve le redémarrage de l'exécutable dans /system/bin/reboot

Voici quelques unes de mes tentatives :

Process reboot = Runtime.getRuntime().exec("/system/bin/reboot");
Process reboot = Runtime.getRuntime().exec("reboot");
Process reboot = Runtime.getRuntime().exec("su reboot"); 

J'ai lu cet article sur les pièges de l'Exécution.exec(), mais je pense que je ne suis pas dans ce cas.

Que l'utilisation de ConnectBot me permettre de faire une telle action, je suis sûr que c'est possible. S'il vous plaît ne me dites pas d'aller jeter un oeil à la ConnectBot code, c'est un grand et compliqué projet 🙂

Pouvez-vous m'aider avec ce problème ?

Grâce.

J'ai déjà répondu à cette question, il y a quelques mois: stackoverflow.com/questions/4580254/... , stackoverflow.com/questions/3456467/...
Suite à cette question, j'ai fait une petite application que j'ai open source: github.com/rbochet/Fast-Forward-Reboot

OriginalL'auteur Rob | 2011-03-30