首页 > 解决方案 > 设置待处理意图/广播接收器的问题

问题描述

我想在一天的某个时间发送通知。为此,我制作了一个 BroadcastReceiver。但我有一个问题,广播接收器没有在我想要的时间执行,而是随机执行(例如,当我启动应用程序时)这是我的主要活动中的代码,它设置了待处理的意图和警报管理器:

        Intent notifyIntent = new Intent(this, ReminderBroadcast.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, NOTIFICATION_REMINDER, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
    String notificationTime = SettingsSharedPreferences.getDailyNotificationTime(getApplicationContext());

    //sets the notification time, which is saved in Shared Preferences
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
    Calendar notificationTimeCalendar = Calendar.getInstance();
    notificationTimeCalendar.setTimeInMillis(System.currentTimeMillis());
    try {
        notificationTimeCalendar.setTime(sdf.parse(notificationTime));
    } catch (ParseException e) {
        e.printStackTrace();
    }

    //sets AlarmManager
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, notificationTimeCalendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
    SettingsSharedPreferences.setNotificationTimeChanged(MainActivityTaskAddListNavigation.this, false);

标签: javaandroidbroadcastreceiveralarmmanagerandroid-pendingintent

解决方案


您需要在设备重启时设置启动警报服务。试试下面的链接,这将对您有所帮助。我用同一个实现。

https://www.stacktips.com/tutorials/android/repeat-alarm-example-in-android


推荐阅读