Runtime.exec (): Перезагрузить Android?

Я ищу решение, которое можно использовать для перезагрузки рутированного устройства. Я знаю, что перезагрузка устройства - это очень плохой дизайн для пользователя , как указано здесь , и это не совсем для приложения. Основная цель - перезагрузить телефон во время тестов (работаю в приложении для видеочата, и иногда мне нужно перезагрузиться, когда все идет не так)

Я заметил, что перезагрузка телефона намного быстрее с использованием перезагрузки в терминале ( adb shell или ConnectBot, например), чем обычная перезагрузка с ACTION_REBOOT , которую я все равно не могу использовать.

На данный момент я могу получить привилегии суперпользователя с помощью

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

, но я не могу выполнить фактическую перезагрузку. Я безуспешно пытаюсь использовать G1 (HTC) и Galaxy S (Samsung). Я нашел исполняемый файл перезагрузки в / system / bin / reboot

Вот некоторые из моих попыток:

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

Я прочитал эту статью о подводных камнях Runtime.exec (), но я думаю, я не в этом случае.

Поскольку использование ConnectBot позволяет мне выполнять такое действие, я почти уверен, что это возможно. Пожалуйста, не' Не скажите мне пойти и взглянуть на код ConnectBot , это большой и сложный проект :)

Вы можете мне помочь с этой проблемой?

Спасибо.

16
задан Community 23 May 2017 в 12:30
поделиться