Я пытаюсь создать приложение для личного использования, который может перезагрузить или POWEROFF моего андроида устройство, в зависимости от того будет работать, но этот код не работает:Reboot корневого андроид устройства
Runtime.getRuntime().exec("su -c reboot");
Я уже добавил разрешение REBOOT в манифесте android
Но если я выполню этот код внутри оболочки ADB, мое устройство перезагрузится.
Вот мой код:
public void reboot() {
Process rebootProcess = null;
try
{
rebootProcess = Runtime.getRuntime().exec("su -c reboot");
}
catch (IOException e)
{
e.printStackTrace();
return;
}
// We waitFor only if we've got the process.
if (rebootProcess != null)
{
try
{
int result = rebootProcess.waitFor();
Log.i("result", "" + result);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
UPDATE
Выполнение команды под оболочки ADB работает, только если я печатаю су, нажмите клавишу ВВОД введите перезагрузиться. Он не работает на одной строке.
https://stackoverflow.com/questions/5603221/cant-reboot-device-using-runtime-exec?rq=1 возможно –
Различные настройки переменной PATH может укусить вас при работе в приложениях разница/пользователей. Вы можете использовать команду «which», чтобы найти полные пути к «su» и «reboot» в вашей системе, а затем включить их в свой код Java. На Debian у меня есть «/ bin/su» и «/ sbin/reboot», но вы можете ожидать разные для Android. –
su и перезагрузка находятся в/system/bin. Попробовал добавить путь к команде в моем коде. Он по-прежнему не работает –