现在有一个定时提醒的功能, 用 AlarmManager 自己来做,有多少坑做过的都知道。(应用被kill, 应用保活,息屏,关机重启,多版本兼容问题。。。)。要自己做一个完善的不是 1-2天就能搞定的。当然如果是应用内简单的定时执行,定时提醒 AlarmManager 还是很好用的。
https://www.jianshu.com/p/1f919c6eeff6
对于这种需求可以调用系统闹钟或用系统日历的提醒事件来做。
日历提醒功能可以直接用 Intent 起日历提醒界面,这样最简单,不需要权限。
private void OpenCalendar() {
Calendar beginTime = Calendar.getInstance();//开始时间
beginTime.clear();
beginTime.set(2014,0,1,12,0);//2014年1月1日12点0分(注意:月份0-11,24小时制)
Calendar endTime = Calendar.getInstance();//结束时间
endTime.clear();
endTime.set(2014,1,1,13,30);//2014年2月1日13点30分(注意:月份0-11,24小时制)
Intent intent = new Intent(Intent.ACTION_INSERT)
.setData(Uri.parse("content://com.android.calendar/events"))
.putExtra("beginTime", beginTime.getTimeInMillis())
.putExtra("endTime", endTime.getTimeInMillis())
.putExtra("title", "标题")
.putExtra("description", "地点");
startActivity(intent);
}
调用API 直接设置需要动态申请权限
https://www.cnblogs.com/loaderman/p/10489592.html
https://developer.android.com/guide/topics/providers/calendar-provider
设置系统闹钟需要 SET_ALARM 权限
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
Date date = sf.parse(sDate + sTime);
Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM);
intent.putExtra(AlarmClock.EXTRA_HOUR, 11);
intent.putExtra(AlarmClock.EXTRA_MINUTES, 59);
intent.putExtra(AlarmClock.EXTRA_MESSAGE, "hello world");
intent.putExtra(AlarmClock.EXTRA_VIBRATE, true);
intent.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
取消闹钟用 AlarmClock.ACTION_DISMISS_ALARM
网友评论