Android 2.2: перезагрузите устройство программно - PullRequest
13 голосов
/ 02 января 2011

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

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

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

Спасибо

Ответы [ 6 ]

35 голосов
/ 12 ноября 2011

Мне показалось, что это работает:

try {
        Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "reboot" });
        proc.waitFor();
    } catch (Exception ex) {
        Log.i(TAG, "Could not reboot", ex);
    }
0 голосов
/ 27 сентября 2017

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

Java.Lang.Runtime.GetRuntime().Exec(new String[] { "/system/xbin/su", "-c", "reboot now" });
0 голосов
/ 07 марта 2015

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

0 голосов
/ 18 сентября 2014

По-прежнему для корневых устройств, но в случае, если вы хотите повысить безопасность (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.
    }
}
0 голосов
/ 27 октября 2012

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

try{
    Process p = Runtime.getRuntime().exec("su");
    OutputStream os = p.getOutputStream();                                       
    os.write("reboot\n\r".getBytes());
    os.flush();
}catch(IOException )
0 голосов
/ 23 января 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...