как запланировать уведомление с помощью диспетчера тревог

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

Calendar c = Calendar.getInstance();
c.set(2014, 4, 18, 2, 20, 0);
AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(getBaseContext().ALARM_SERVICE);
int id = (int) System.currentTimeMillis();
Intent intent = new Intent(this, TimeAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), id, intent, PendingIntent.FLAG_UPDATE_CURRENT);   
alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);

Это мой класс приемника:

public class TimeAlarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent paramIntent) {
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    Intent intent = new Intent("android.intent.action.VIEW");
    intent.setData(Uri.parse("http://www.sdfasdf.ch"));
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    // Create the notification
    Notification notification = new Notification(R.drawable.android_anydont_logo, "sdfs", System.currentTimeMillis());
    notification.setLatestEventInfo(context, "something something", "darkside",pendingIntent);

    // Fire the notification
    notificationManager.notify(1, notification);
}
}

Это определение в манифесте:

receiver
        android:name="com.hack.doneit.utils.TimeAlarm"
        android:process=":remote" />

Моя проблема в том, что я не могу настроить будильник на срабатывание приемника в определенное время в будущем. Определенного дня будет достаточно.


person JY2k    schedule 17.04.2014    source источник
comment
Мой ответ сработал?   -  person Libin    schedule 26.04.2014


Ответы (1)


Проблема связана с установленным вами значением Month. Я полагаю, вы думали, что для месяца April значение равно 4. Значение месяца starts from 0, поэтому April will be 3.

Измените код месяца как Calendar.APRIL или установите значение как 3

c.set(2014, Calendar.APRIL, 17, 20, 43, 0);

Это должно работать. Кроме того, ваши коды идеальны.

Примечание. Вы используете Notification устаревшие API . Используйте Notification Builder

person Libin    schedule 18.04.2014