Дата и время изменения прослушивателя в Android?



в моем приложении есть служба сигнализации, и я считаю, что если пользователь изменяет дату или время на прошедшее время. Моя тревога не будет срабатывать в то время, когда я ожидаю.



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

419   2  

2 ответов:

Создать фильтр намерениях :

static {
    s_intentFilter = new IntentFilter();
    s_intentFilter.addAction(Intent.ACTION_TIME_TICK);
    s_intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
    s_intentFilter.addAction(Intent.ACTION_TIME_CHANGED);
}

и широковещательный приемник:

private final BroadcastReceiver m_timeChangedReceiver = new BroadcastReceiver() {                                                                                             
    @Override
    public void onReceive(Context context, Intent intent) {
        final String action = intent.getAction();

        if (action.equals(Intent.ACTION_TIME_CHANGED) ||
                    action.equals(Intent.ACTION_TIMEZONE_CHANGED)) {
            doWorkSon();
        }
    }
};

Регистрация приемника:

public void onCreate() {
    super.onCreate();
    registerReceiver(m_timeChangedReceiver, s_intentFilter);     
}

EDIT:

и отменить его регистрацию:

public void onDestroy() {
    super.onDestroy();
    unregisterReceiver(m_timeChangedReceiver);     
}

В дополнение к принятому ответу

если вы хотите слушать изменения времени пока ваше приложение не работает Я бы зарегистрировался в манифесте:

<receiver android:name="com.your.pacakge.TimeChangeBroadcastReceiver">
    <intent-filter>
        <action android:name="android.intent.action.TIME_SET"/>
        <action android:name="android.intent.action.TIMEZONE_CHANGED"/>
    </intent-filter>
</receiver>

если вы это сделаете, не регистрируйте явно приемник в коде с помощью registerReceiver и unregisterReceiver.

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

Comments

    Ничего не найдено.