[英]Pushing more than one notification at specific time (AlarmManager, NotificationManager) - Android
我正在尝试制作离线推送通知,该通知将在特定时间推送一次。 这是我的Calendar和AlarmManager设置:
Intent intent = new Intent(getApplicationContext(), Notification_receiver.class);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
PendingIntent pendingIntent1 = PendingIntent.getBroadcast(getApplicationContext(), 101, intent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(getApplicationContext(), 102, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar push1 = Calendar.getInstance();
Calendar push2 = Calendar.getInstance();
push1.set(2017, Calendar.JULY, 1);
push1.set(Calendar.HOUR_OF_DAY, 20);
push1.set(Calendar.MINUTE, 22);
push1.set(Calendar.SECOND, 30);
push2.set(2017, Calendar.JULY, 1);
push2.set(Calendar.HOUR_OF_DAY, 20);
push2.set(Calendar.MINUTE, 28);
push2.set(Calendar.SECOND, 30);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, push1.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent1);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, push2.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent2);
我的通知类别:
public class Notification_receiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent repeating_intent = new Intent(context, RepeatingActivity.class);
repeating_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent1 = PendingIntent.getActivity(context, 101, repeating_intent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent pendingIntent2 = PendingIntent.getActivity(context, 102, repeating_intent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder1 = new NotificationCompat.Builder(context).setContentIntent(pendingIntent1)
.setSmallIcon(R.drawable.onusicijadi_icon)
.setContentTitle("FIRST")
.setContentText("FIRST NOTIFICATION")
.setDefaults(Notification.DEFAULT_ALL)
.setAutoCancel(true);
notificationManager.notify(103, builder1.build());
NotificationCompat.Builder builder2 = new NotificationCompat.Builder(context).setContentIntent(pendingIntent2)
.setSmallIcon(R.drawable.onusicijadi_icon)
.setContentTitle("SECOND")
.setContentText("SECOND NOTIFICATION")
.setDefaults(Notification.DEFAULT_ALL)
.setAutoCancel(true);
notificationManager.notify(104, builder2.build());
}}
RepeatingActivity.class只是:
public class RepeatingActivity extends AppCompatActivity{
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_program);
}
这段代码在20:22和20:28发送两个通知,显然,我希望将它们分开。 因此,例如,一个通知在20:22进行,另一个通知在20:28进行。 在为期3天的节日期间,每项活动我都需要大约30条通知。
您正在使用哪个API?
注意:从API 19开始,所有重复警报都是不精确的。 如果您的应用程序需要精确的交付时间,则它必须使用一次性精确警报,并如上所述每次重新安排。 targetSdkVersion早于API 19的旧版应用程序将继续将其所有警报(包括重复警报)视为精确警报。
您可以在AlarmManager文档中找到更多信息,如果仍然使用AlarmManager,则解决方案将是setExact
或setExactAndAllowWhileIdle
。
使用这些通知时要当心,如果您在短时间内收到多个通知,则可以考虑使用一项服务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.