Есть ли способ получить уведомление, когда пользователь выключает устройство? - PullRequest
42 голосов
/ 03 февраля 2010

Мне нужно знать, когда пользователь выключает свой телефон. Существуют ли какие-либо трансляции (или подобные), которые уведомляют, когда телефон пользователя выключен?

Ответы [ 3 ]

65 голосов
/ 03 февраля 2010

Вы можете использовать ACTION_SHUTDOWN Intent , которое транслируется, когда телефон собирается выключиться. В документации написано:

Приложениям обычно не нужно обрабатывать это, поскольку активность на переднем плане также будет приостановлена.

Другими словами, если вы соответствующим образом реагируете на все события жизненного цикла для своей Деятельности, вам нет необходимости использовать это, если вы действительно не хотите делать что-то определенное, связанное с выключением.

Намечение ACTION_SHUTDOWN было введено в API уровня 4, другими словами , оно будет отправлено только на телефонах под управлением Android 1.6 или более поздней версии .

Вы будете ловить трансляцию с BroadcastReceiver. Это будет выглядеть примерно так:

public class ShutdownReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        //Insert code here
    }

}

Вам также потребуется запись в манифесте, например:

<receiver android:name=".ShutdownReceiver">
  <intent-filter>
    <action android:name="android.intent.action.ACTION_SHUTDOWN" />
  </intent-filter>
</receiver>

В зависимости от того, что вы делаете, другим вариантом будет использование ACTION_BOOT_COMPLETED Intent , которое отправляется при перезагрузке телефона.

20 голосов
/ 27 октября 2011

В дополнение к ACTION_SHUTDOWN вы должны добавить android.intent.action.QUICKBOOT_POWEROFF к своему фильтру намерений.
ACTION_SHUTDOWN не всегда транслируется на некоторых устройствах HTC (например, Evo 4g).
Чтобы быть болееВ частности, если вы выберете «Перезапуск», ACTION_SHUTDOWN будет транслироваться, но если вы выберете «Выключить», вместо него будет транслироваться QUICKBOOT_POWEROFF.

0 голосов
/ 22 мая 2013

Чтобы расширить то, что сказал Дейв Уэбб, это правильный способ справиться с этим:

Вы можете переопределить функции жизненного цикла Android Activity :

protected void onPause();
protected void onResume();

В большинствесценариев, реализующих их, должно быть достаточно, и вам не потребуется специально обрабатывать события «отключения питания».

На веб-сайте Android и в ответе на этот вопрос имеется много дополнительной информации.вопрос жизненного цикла .

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