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

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

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

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

Спасибо

6 ответов

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

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

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

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

Вы можете использовать PowerManager для перезагрузки (это не гарантирует перезагрузки - ОС может отменить его): ссылки
ссылка № 2

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

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.
    }
}

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

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

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

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

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

Другие вопросы по тегам