Подтвердить что ты не робот

Android 2.2: перезагрузите устройство программно

Я хотел бы знать, есть ли способ перезагрузить устройство через код. Ive попытался:

Intent i = new Intent(Intent.ACTION_REBOOT); 
i.putExtra("nowait", 1); 
i.putExtra("interval", 1); 
i.putExtra("window", 0); 
sendBroadcast(i);

И добавлены разрешения для REBOOT, но он все равно не работает.

Спасибо

4b9b3361

Ответ 1

Казалось, это сработало для меня:

try {
        Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "reboot" });
        proc.waitFor();
    } catch (Exception ex) {
        Log.i(TAG, "Could not reboot", ex);
    }

Ответ 2

Все еще для укорененных устройств, но если вы хотите безопаснее (process.waitFor() обусловлен, в отдельном try-catch, у нас есть правильная обработка исключений, "теперь" добавлена ​​в команду после перезагрузки, что необходимо для некоторых устройств и т.д.) и, возможно, более чистый код, посмотрите на это:

Process rebootProcess = null;
try
{
    rebootProcess = Runtime.getRuntime().exec("su -c reboot now");
}
catch (IOException e)
{
    // Handle I/O exception.
}

// We waitFor only if we've got the process.
if (rebootProcess != null)
{
    try
    {
        rebootProcess.waitFor();
    }
    catch (InterruptedException e)
    {
        // Now handle this exception.
    }
}

Ответ 3

Возможно, вы можете использовать PowerManager для его перезагрузки (это не гарантирует перезагрузки операционной системы, OS может отменить его): ссылки
ссылка # 2

Ответ 4

Я использую Xamarin. Для меня решение:

Java.Lang.Runtime.GetRuntime().Exec(new String[] { "/system/xbin/su", "-c", "reboot now" });

Ответ 5

Вот решение. Помните, что устройство должно быть укоренено.

try{
    Process p = Runtime.getRuntime().exec("su");
    OutputStream os = p.getOutputStream();                                       
    os.write("reboot\n\r".getBytes());
    os.flush();
}catch(IOException )

Ответ 6

Если телефон укоренен, это на самом деле очень просто:

try {
    Runtime.getRuntime().exec("su");
    Runtime.getRuntime().exec("reboot");
} catch (IOException e) {
}               

Первая команда запросит разрешение суперпользователя. Второй, перезагрузит телефон. Нет необходимости в дополнительных разрешениях в файле манифеста, так как фактическая перезагрузка выполняется исполняемой комаменой, а не приложением.