如何在Android Oreo或更高版本上设置闹钟?

时间:2018-06-23 06:51:15

标签: android alarmmanager android-8.0-oreo background-service

我用AlaramManager实现了background service,在Oreo以下的设备上运行良好。但是不适用于android Oreo及以上版本,因为Google停止了background services从事Oreo及以上版本的工作。

是否有任何源代码或任何种类的资源可以帮助我在alarms或更高版本的设备上设置android Oreo

搜索了一段时间后,我发现了有关JobsIntentService的信息,但是找不到足够的信息。而且我不知道这是不是要走的路。基本上,我想显示特定日期和时间的notifications

谢谢。

1 个答案:

答案 0 :(得分:2)

请尝试以下方法,该方法将为您服务。

/**
 * Method for start Alarm on defined minute
 *  @param minutes Minute when you want to start after current time
 * @param context
 */
public static void startAlarm(Context context, int minutes) {
    Logger.print("AlarmReceiver startAlarm  called");
    Intent alarmIntent = new Intent(context, WakefulBroadcastReceiverService.class);
    alarmIntent.setAction("testAPP");
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 123451, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    manager.cancel(pendingIntent);
    long alarmPeriodicTime = System.currentTimeMillis() + Utils.getTimeInMilliSec(Constant.TimeType.MINUTE, minutes);
    if (Build.VERSION.SDK_INT >= 23) {
        manager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, alarmPeriodicTime, pendingIntent);
    } else if (Build.VERSION.SDK_INT >= 19) {
        manager.setExact(AlarmManager.RTC_WAKEUP, alarmPeriodicTime, pendingIntent);
    } else {
        manager.set(AlarmManager.RTC_WAKEUP, alarmPeriodicTime, pendingIntent);
    }
}