Как программно перезагрузить телефон

Вроде бы и вопрос не редкий, но у меня никак не получается перезагрузить телефон имея рут. (вариант с кнопкой, естественно, не приемлем)

В Manifest напихал, всё что нашёл:

 <uses-permission android:name="android.intent.action.BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <user-permission android:name="android.permission.REBOOT"/>

1) Runtime.getRuntime().exec("system/bin/su").write("reboot").getBytes(); ошибка - подчёркнуто write

2)

void shotdown() throws IOException {
    Runtime.getRuntime().exec(new String[]{"su", "-c", "reboot -p"});}

при запуске метода - приложение вылетает.

3) Пробовал много вариантов через интенты - ничего.

Может уже есть нетрадиционные варианты? Ну, например, программно осуществить "звонок" на системный код, типа ##код## или хоть уже с какими то костылями =) Неужели я уже не имею права перезагрузить свой телефон?


Ответы (1 шт):

Автор решения: Sergei Buvaka

Требуемый пермишен не относится к вашему методу перезагрузки, так как ваш метод требует телефон рутом(с su). Для перезагрузки телефона требуется пермишен, как и раньше, но использовать метод PowerManager # reboot.

PowerManager pm = (PowerManager) getSystemService (Context.POWER_SERVICE); 
pm.reboot (null);
→ Ссылка