[英]android : setting alarm on monthly basis
我正在开发一个Android应用程序,用于按月设置警报。 我已经为下个月提供了以下代码。
private int GetTotalDays(int monthRecvd1) {
int totalDays=getDaysInMonthInPresentYear(taskMonth1);
myDays=(totalDays-taskdate1)+taskdate1;
}
private int getDaysInMonthInPresentYear(int taskMonth1)
{
int days=0;
alarmCalendar.set(Calendar.HOUR, Hrs);
alarmCalendar.set(Calendar.MINUTE, Mins);
alarmCalendar.set(Calendar.SECOND, 0);
alarmCalendar.set(Calendar.DATE, date);
alarmCalendar.set(Calendar.MONTH, Month);
alarmCalendar.set(Calendar.YEAR, year);
Long alarmTime = alarmCalendar.getTimeInMillis();
calendar.set(year, Month, date);
days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
该代码仅适用于下个月。 并且在下个月的第二个月不起作用。 例如,如果我将警报设置为4月,它将设置为5月,但不会设置为6月,依此类推。
谁能告诉我解决方案。
请帮忙! 谢谢!
使用setRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)
方法,而不仅仅是AlarmManager.set()。 您可以找到有关文档的更多信息。
http://developer.android.com/reference/android/app/AlarmManager.html
编辑:它应该像这样
public void onClick(View arg0) {
Intent serviceIntent = new Intent(AndroidAlarmService.this, this);
pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, serviceIntent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 10);
long now = calendar.getTimeInMillis();
calendar.add(Calendar.DATE,calendar.getActualMaximum(Calendar.MONTH));
long repeat = calendar.getTimeInMillis();
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, now , repeat , pendingIntent);
}
尝试这个..
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + AlarmManager.INTERVAL_DAY,
AlarmManager.INTERVAL_DAY, intent);
解决方案是显式强制这些文字为long类型,这是一个64位数字:
am.setRepeating(AlarmManager.RTC_WAKEUP,alarmTimefor30,30L * 1440L * 60000L,pi);
资源:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.