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) {
}
Первая команда запросит разрешение суперпользователя. Второе, перезагрузит телефон. Нет необходимости в дополнительных разрешениях в файле манифеста, поскольку фактическая перезагрузка выполняется исполняемой командой, а не приложением.