Уведомление Android в определенную дату

Мне нужно создать приложение, в котором я должен установить дату, и в эту конкретную дату в 9 часов я должен дать уведомление. Каков самый простой способ сделать это? Я хочу, чтобы приложение работало, даже если его все равно убьют. Является ли AlarmManager решением?


person Buze    schedule 29.03.2012    source источник
comment
я имел в виду, что я все еще могу получить это уведомление без повторного доступа к приложению   -  person Buze    schedule 29.03.2012
comment
ОП, очевидно, имел в виду, если он / она вынет батарею и заменит ее.   -  person Ojonugwa Jude Ochalifu    schedule 09.07.2015


Ответы (4)


Чтобы запланировать действие, вы можете использовать AlarmManager

Попробуйте этот код, он работает для меня:

1/Объявите класс BroadcastReceiver для запуска действия, этот класс может находиться внутри вашей активности или снаружи в другом java-файле

public class Receiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        Toast.makeText(context, intent.getStringExtra("param"),Toast.LENGTH_SHORT).show();
    }

}

2/ Внутри вашего метода Oncreate поместите этот код

AlarmManager alarms = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);

    Receiver receiver = new Receiver();
    IntentFilter filter = new IntentFilter("ALARM_ACTION");
    registerReceiver(receiver, filter);

    Intent intent = new Intent("ALARM_ACTION");
    intent.putExtra("param", "My scheduled action");
    PendingIntent operation = PendingIntent.getBroadcast(this, 0, intent, 0);
    // I choose 3s after the launch of my application
    alarms.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+3000, operation) ;   

Запустите приложение, через 3 секунды появится всплывающее уведомление, поэтому вы можете изменить «System.currentTimeMillis () + 3000» на время пробуждения.

person Wajdi Hh    schedule 29.03.2012

Вы должны использовать AlarmManager для установки будильника типа RTC_WAKEUP.

Из документов:

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

Итак, это означает, что:

  • Для этого вам не нужен постоянно работающий сервис.
  • Может потребоваться BroadcastListener, который прослушивает событие BOOT_COMPLETE, чтобы перерегистрировать аварийный сигнал после перезагрузки устройства.
person Dheeraj Vepakomma    schedule 29.03.2012

Вам следует создать приложение как службу Android.

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

person Matt    schedule 29.03.2012

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

person Anurag Ramdasan    schedule 29.03.2012