一、引言
- 描述:在日常生活中,有些应用拥有着软件活动这个功能,就比如:520、618、双十一等。就需要设置活动提醒,用于提醒用户参加活动。防止错过参与时间,导致不必要的烦恼和懊悔。
- 解决方案:
1、注册Service(但会随着关机而关闭服务,那么就需要设置开机自启权限,上一期博客有介绍如何使用)
2、注册日历 - 难度:初级
- 效果
二、实现
1、权限配置
老规矩,调用软件之外的应用和服务都需要配置权限(AndroidManifest.xml)
这里我们使用注册日历提醒,来实现这个需求。日历作为手机标配的服务之一,他的功能和服务肯定比大部分初学者厉害,刚开始就没必要为难自己了,就直接套用这些功能来实现一些简单的功能。
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
2、主要编码
其中关于Intent机制的学习可以前往Android官网学习。通过developers平台,翻阅指南,查找到的简单的日历权限使用。我个人认为学习一项技术,关于此技术的官方文档起码要读两遍左右。
参数 | 描述 |
---|---|
EXTRA_EVENT_BEGIN_TIME | 开始时间 |
EXTRA_EVENT_END_TIME | 结束时间 |
Events.TITLE | 主题 |
Events.DESCRIPTION | 备注 |
Events.EVENT_LOCATION | 地点 |
- Calendar
一个抽象基类,用于在对象和一组整数字段(如 、、 等)之间进行转换。Date的子类根据特定日历系统的规则解释a。ICU4J包含几个实现不同国际日历系统的子类。CalendarDate与其他区分区域设置的类一样,提供了一个类方法 ,用于获取此类型的一般有用的对象。的方法返回适合区域设置类型的日历,其时间字段已使用当前日期和时间初始化:Calendar getInstance Calendarget Instance
-
Intent(来自于官方-只是一部分)
-
主要代码
try {
Calendar beginTime = Calendar.getInstance();
beginTime.set( year , month, day, hoer, minute);
Calendar endTime = Calendar.getInstance();
endTime.set(year, month, day, hoer + 1, minute);
Intent intent = new Intent(Intent.ACTION_INSERT)
.setData(CalendarContract.Events.CONTENT_URI)
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis()) // 开始时间
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis()) // 结束时间
.putExtra(CalendarContract.Events.TITLE, title) // 主题
.putExtra(CalendarContract.Events.DESCRIPTION, des) // 备注
.putExtra(CalendarContract.Events.EVENT_LOCATION, loc) // 地点
.putExtra(CalendarContract.Events.AVAILABILITY, CalendarContract.Events.AVAILABILITY_BUSY)
.putExtra(Intent.EXTRA_EMAIL, "rowan@example.com, trevor@example.com");
startActivity(intent);
} catch (SecurityException e){
e.printStackTrace();
}