【发布时间】:2019-02-14 19:04:54
【问题描述】:
我有这个方法。如果我在一天之内设置闹钟,它工作正常。我需要在 Android 上为一周/月/年的特定日子安排闹钟。
public static void setAlarmFragment(int intervalDays, Context context, Calendar targetCal) {
if (targetCal != null) {
Intent intent = new Intent(context, PrescriptionAlarmActivity.class);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
int uniqueId = CommonUtils.generateRandomID();
intent.putExtra("uniqueId", uniqueId);
PendingIntent pendingIntent = PendingIntent.getActivity(context, uniqueId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
int i = Build.VERSION.SDK_INT;
if (alarmManager != null) {
if (intervalDays > 0) {
long customAlarmInterval = AlarmManager.INTERVAL_DAY * intervalDays;
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,
targetCal.getTimeInMillis(), customAlarmInterval, pendingIntent);
Log.e("AlarmBroadcastReceiver", "Alarm set: " + CommonUtils.getAlarmTime(targetCal));
}
else {
if (i < 19) {
alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
}
else if (i < 23) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
}
else {
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
}
Log.e("AlarmBroadcastReceiver", "Alarm set: " + CommonUtils.getAlarmTime(targetCal));
}
}
}
}
【问题讨论】:
标签: android scheduled-tasks alarm