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.
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
Vous devez vous connecter pour publier un commentaire.
redémarrage fonctionne très bien sur android. vous n'êtes probablement pas de faire de l'exécution.exec() correctement.
vous devez gérer la
OriginalL'auteur jkhouw1
Enfin, après des semaines de recherche:
Pour une raison que j'ai eu à utiliser: le temps d'Exécution.getRuntime().exec(new String[]{"su","-c","redémarrer maintenant"}); à la place, mais cela a fonctionné. Merci beaucoup!
Les bienvenus 🙂
Il n'est pas de travail dans mon appareil samsung, ai-je besoin d'une autorisation ?
C'est parce que
su
peut-être sous/system/xbin/
au lieu de/system/bin/
. L'emplacement dépend de la façon dont vous avez obtenusu
ou comment vous avez ancré votre appareil.OriginalL'auteur Kevin Parker
Je trouve que je ne peux pas faire un reboot par programmation.
En outre, je peux ouvrir une fenêtre de terminal sur mon téléphone android à l'aide de l'Émulateur de Terminal d'application,
tapez su
obtenez l'invite # pour l'accès root
puis tapez "#reboot"
et j'obtiens la réponse "pas autorisé!"
Des suggestions?
OK, tant pis, j'ai tout compris.
Sur les téléphones HTC la commande de redémarrage ne fonctionnera pas, même avec la LIGUE d'accès à la racine.
Besoin d'invoquer BUSYBOX pour effectuer la commande de redémarrage.
OriginalL'auteur howard
Ce code fonctionne sur Samsung Galaxy S2, S4, Sony Xperia S (LTi 26)
OriginalL'auteur XXX
Après une longue lutte, j'ai trouvé la solution de travail.
Si votre système est utilisé port série puis exécuter la commande ci-dessous,
si l'utilisation normale de port alors excure commande ci-dessous
différence n'est que
/bin
et/xbin
OriginalL'auteur Yogesh Rathi