如何在不同时间的特定日期显示多个通知

How to show Multiple Notifications on a particular day in different times

在我的 android 应用中,我需要在特定日期(例如 21-11-2015)的不同时间显示 8 个通知,我只能使用警报管理器显示 1 个通知 class 但我还应该显示剩余的 7 个不同内容的通知。

这是我的活动

Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(System.currentTimeMillis());
    cal.clear();
    cal.set(2015, 10, 20, 14, 18);
    cal.set(2015, 10, 20, 14, 20);

    Intent myIntent1 = new Intent(this, AlarmBroadCustReciver.class);

    Intent myIntent2 = new Intent(this, AlarmBroadCustReciver.class);

    PendingIntent pendingIntent1 = PendingIntent.getBroadcast(this, 1253, myIntent1,
            PendingIntent.FLAG_UPDATE_CURRENT);

    PendingIntent pendingIntent2 = PendingIntent.getBroadcast(this, 1263, myIntent2,
            PendingIntent.FLAG_UPDATE_CURRENT);


    AlarmManager alarmManager1 = (AlarmManager) getSystemService(ALARM_SERVICE);

    alarmManager1.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent1);
    alarmManager1.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent2);

这是AlarmReceiver

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;


public class AlarmBroadCustReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    Toast.makeText(context, "Alarm worked.", Toast.LENGTH_LONG).show();
}
}

在日历对象中设置不同的时间,然后使用该对象通过 AlarmManager 设置闹钟。

您可以同时设置所有闹钟,它们将在设置的时间执行。

您的代码(由我修改):-

    AlarmManager alarmManager1 = (AlarmManager) getSystemService(ALARM_SERVICE);
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(System.currentTimeMillis());
    Intent myIntent1 = new Intent(this, AlarmBroadCustReciver.class);
    myIntent1.setAction(ACTION_ONE);
    PendingIntent pendingIntent1 = PendingIntent.getBroadcast(this, 1253, myIntent1,
            PendingIntent.FLAG_UPDATE_CURRENT);
    // Set the time for first alarm here
    cal.set(2015, 10, 20, 14, 18);
    alarmManager1.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent1);
    Intent myIntent2 = new Intent(this, AlarmBroadCustReciver.class);
    myIntent2.setAction(ACTION_TWO);
    PendingIntent pendingIntent2 = PendingIntent.getBroadcast(this, 1263, myIntent2,
            PendingIntent.FLAG_UPDATE_CURRENT);
    // Set the time for second alarm here
    cal.set(2015, 10, 20, 14, 20);
    alarmManager1.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent2);
    // In this way set time for all the rest of the alarms

您的 BroadcastReceiver class 将如下所示:-

    public class AlarmBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
        builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher));
        builder.setContentTitle(context.getString(R.string.app_name));
        if (intent.getAction().equalsIgnoreCase(ACTION_ONE)) {
            builder.setContentText("Alarm one");
        } else {
            builder.setContentText("Alarm two");
        }
        Notification notification = builder.build();
        int notificationID = 0;
        notificationManager.notify(notificationID, notification);
        // If you want two notifications simultaneously, change the notificationID (written in above line of code) for every notification.
    }
}

请注意,ACTION_ONE和ACTION_TWO是两个字符串常量