首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在特定时间推送多个通知(AlarmManager、NotificationManager) -安卓

在特定时间推送多个通知(AlarmManager、NotificationManager) -安卓
EN

Stack Overflow用户
提问于 2017-07-02 02:57:29
回答 1查看 61关注 0票数 1

我正在尝试制作离线推送通知,将在特定的时间推送一次。以下是我的日历和AlarmManager设置:

代码语言:javascript
复制
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);

和我的通知类:

代码语言:javascript
复制
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只是:

代码语言:javascript
复制
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开始。我需要大约30个通知,为每个事件在3天的节日。

EN

回答 1

Stack Overflow用户

发布于 2017-07-02 05:11:12

您使用的是哪种api?

注意:从API 19开始,所有重复告警都是不准确的。

使用这些服务时要小心,如果您在短时间内收到多个通知,您可以考虑使用服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44864370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档