Перезагрузите телефон нажатием кнопки.

Я делаю Android-приложение, которое необходимо перезагрузить или выключить телефон при нажатии кнопки. Это возможно? Или телефон потребует доступа root?

Ответ 1

Вы можете сделать это, используя android.os.PowerManager. Функция reboot(String reason) доступна, вам необходимо разрешение:

android.permission.REBOOT

Официальный сайт:

http://developer.android.com/reference/android/os/PowerManager.html#reboot(java.lang.String)

Конечно, вы, скорее всего, получите это разрешение, только если ваше приложение подписано с ключом подписи системы:

Как скомпилировать Android-приложение с системными правами

Ответ 2

Я сделал это в своем приложении, вызвав метод ниже.

Примечания: 1. Убедитесь, что телефон укоренен 2. Разрешить приложению в корневом менеджере автоматически предоставлять права root.

    void reboot() {
        if (reboot) {

          try {
              Process proc = Runtime.getRuntime().exec(new String[]{"/system/bin/su", "-c", "reboot"});
              proc.waitFor();
          } catch (Exception ex) {
              Log.e(TAG, "Error ", ex);
          }

        }
  }

Ответ 3

Если ваше устройство является корневым устройством, вы можете использовать код ниже.

Runtime.getRuntime().exec(new String[]{"/system/bin/su", "-c", "reboot now"});