应用程序启动时触发的通知

时间:2015-05-24 14:26:50

标签: android alarmmanager android-notifications android-alarms schedule

我想根据用户插入的特定时间制作一个每天发送预定通知的应用。 问题是,当我启动应用程序时,我会随机收到一两个通知,但我没有在设定的时间收到它们。

以下是用户点击按钮时调用的setAlarm()函数:

public void setAlarm()
{
    String mName = NameFld.getText().toString();
    String mFormat = FormatSpn.getSelectedItem().toString();

    Date date = new Date();
    Calendar calendar = new GregorianCalendar();
    Calendar current = new GregorianCalendar();

    current.setTime(date);
    calendar.setTime(date);

    calendar.set(Calendar.HOUR_OF_DAY, picker_hour);
    calendar.set(Calendar.MINUTE, picker_minute);
    calendar.set(Calendar.SECOND, 0);

    if(current.before(calendar))
    {
        calendar.add(Calendar.DATE, 1);
    }

    medName = mName;    // Used to build the notification (it doesn't matter for now).
    medFormat = mFormat;    // Used to build the notification (it doesn't matter for now).

    long when = calendar.getTimeInMillis();

    Intent intent = new Intent(AddMedicine.this, AlarmReceiver.class);

    final int _id = (int) System.currentTimeMillis();   // PendingIntent id.

    PendingIntent pIntent = PendingIntent.getBroadcast(AddMedicine.this, _id, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    AlarmManager aManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    aManager.set(AlarmManager.RTC_WAKEUP, when, pIntent);

}

这是我的BroadcastReceiver课程:

public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

    String[] data = AddMedicine.getData();  // Used to build the notification (it doesn't matter for now).

    // Notification building.

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
    builder.setAutoCancel(true);
    builder.setTicker("It's pill time!");
    builder.setContentTitle(data[0]);
    builder.setContentText(data[1]);
    builder.setSmallIcon(R.drawable.ic_launcher);

    Notification notification = builder.build();


    NotificationManager nManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
    nManager.notify(0, notification);

    Log.i("NOTIFICATION", "The notification has been fired.");   // Used to see if the alarm ha really been received.
}}

任何人都可以详细解决这个问题吗?提前感谢您的帮助!

0 个答案:

没有答案