来自sqlite db的动态通知

问题描述 投票:0回答:1

我有一个问题要问你。我想通过BroadcastReceiver和AlarmManager使用通知服务。我用来自数据库的动态时间列表设置了警报管理器。

我使用我在MainActivity OnCreate()上调用的此方法,但不起作用

private void restartNotify() {
    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, AlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
            intent, PendingIntent.FLAG_CANCEL_CURRENT);
    am.cancel(pendingIntent);
    ArrayList<String> item = new ArrayList<String>();
    item = GetLists.GetTimesListForNotification(this);
    for (int i = 0; i < item.size(); ++i) {
        String time = item.get(i);
        int Position = time.indexOf(":");
        int hour = Integer.parseInt(time.substring(0, Position));
        int min = Integer.parseInt(time.substring(Position + 1));
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, hour);
        cal.set(Calendar.MINUTE, min);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        am.set(AlarmManager.RTC, cal.getTimeInMillis(),
                pendingIntent);
    }

这是我的广播接收者

public class AlarmReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    NotificationManager mManager;
    mManager = (NotificationManager) context.getApplicationContext()
            .getSystemService(
                    context.getApplicationContext().NOTIFICATION_SERVICE);
    Intent intent1 = new Intent(context.getApplicationContext(),
            MainActivity.class);

    Notification notification = new Notification(R.drawable.ic_launcher,
            "Nuovo messaggio da cura alert", System.currentTimeMillis());
    intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP
            | Intent.FLAG_ACTIVITY_CLEAR_TOP);

    PendingIntent pendingNotificationIntent = PendingIntent.getActivity(
            context.getApplicationContext(), 0, intent1,
            PendingIntent.FLAG_UPDATE_CURRENT);
    notification.flags |= Notification.FLAG_AUTO_CANCEL;
    notification.setLatestEventInfo(context.getApplicationContext(),
            "Le notifiche funzionano", "it is working",
            pendingNotificationIntent);

    mManager.notify(0, notification);
}

}

谢谢。

java android notifications broadcastreceiver alarmmanager
1个回答
0
投票

嗯,这是因为尽管您正在运行一个循环,但您的未决意图请求代码相同。您可以做的是在循环中获取待处理的意图并设置请求代码i。这可能有效。虽然已经晚了,但这可能会对其他人有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.