Android 操作体系日历完结提示功用 顺便开关闹钟
假如想要一个稳定且不必忧虑生命周期的提示办法,能够试试利用体系日历去完结使命的提示,或许某个活动的预定。
gitee:顺手给小冷个star吧 这对小冷很重要 代码地址
环境
-
Java 11
-
Android sdk 30
-
Gredle 7.1
minSdkVersion 23 targetSdkVersion 30 -
测验机型 mi 8(安卓 9) mi10 pro(安卓11) huawei m8(安卓7)
前置知识
日历操作表
其实完结这个功用实质是对安卓原生数据库的增删改查操作,下图便是30sdk中咱们能够用到的体系常量
每一个静态类都对应这一个体系中的数据表。能够经过 下面指令去找到对应的途径
CalendarContract.{table_name}.CONTENT_URI
- events 是咱们主要的使命内容和装备表
- Reminders 是日历提示设置表
- extendedProperties 是拓展特点类
- Calendars 存放根底信息 如日历账户等信息
操作日历和设置闹钟提示 其实便是对上述三张表的处理
ContentValues
这个类是用来存放咱们自己界说的一些条件 ,在刺进体系表之前 拼装数据和一些必备的装备,运用的办法与Map共同。
PS: 由于底层保护了一个arrayMap 所以允许咱们传入K,V形式的数据
ContentValues event = new ContentValues();
event.put("title", title);
event.put("description", description);
event.put("calendar_id", calId); //刺进账户的id
event.put("eventStatus", 1);
event.put(CalendarContract.Events._ID, eventId);
event.put(CalendarContract.Events.HAS_EXTENDED_PROPERTIES, true);
event.put(CalendarContract.Events.DTSTART, start);
event.put(CalendarContract.Events.DTEND, end);
咱们刺进数据表的步骤为
- 运用 ContentValues 拼装数据/加入需求的体系装备
- 运用 CalendarContract 拿到对应的体系途径
- 调用 context.getContentResolver() 这儿有封装好的增上改查办法来完结对底层数据库的操作
功用流程
1、获取权限
在 AndroidManifest 中增加权限
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
假如安卓版别高 最好在activity中运用动态的权限校验,在初始化的时候调用此办法,就能够完结弹窗动态权限校验了
checkPermission(0, Manifest.permission.READ_CALENDAR, Manifest.permission.WRITE_CALENDAR);
// 权限获取
private void checkPermission(int callbackId, String... permissionsId) {
boolean permissions = true;
for (String p : permissionsId) {
permissions = permissions && ContextCompat.checkSelfPermission(this, p) == PERMISSION_GRANTED;
}
if (!permissions)
ActivityCompat.requestPermissions(this, permissionsId, callbackId);
}
2、创立日历账户
体系其实有为咱们创立默许账户,但是既然日历有为咱们预备创立用户的接口,那么咱们还是创立一个归于自己app的用户,之后的各种操作也不会影响到体系的内容
咱们自己界说了日历账户信息 在每次操作日历前 保证咱们的app日历账户存在于体系日历,假如不存在就去创立一个 (不会重复创立 不必忧虑账号冗余)
private static String CALENDARS_NAME = "TaskList";
private static String CALENDARS_ACCOUNT_NAME = "MyTaskList";
private static String CALENDARS_ACCOUNT_TYPE = "MyTaskList";
/**
* 这儿创立账户的展现称号,体系日历为咱们供给了创立账户的入口,那咱们就不运用体系自带的账户,创立一个自己app的账户
*/
private static String CALENDARS_DISPLAY_NAME = "靠谱的使命清单";
/**
* 查看是否存在现有账户,存在则回来账户id,不然回来-1
*/
@SuppressLint("Range")
private static int checkCalendarAccount(Context context) {
Cursor userCursor = context.getContentResolver().query(CalendarContract.Calendars.CONTENT_URI, null, null, null, null);
try {
if (userCursor == null) { //查询回来空值
return -1;
}
int count = userCursor.getCount();
if (count > 0) { //存在现有账户,取第一个账户的id回来
for (int i = 0; i <= count - 1; i++) {
if (i == 0) {
userCursor.moveToFirst();
} else {
userCursor.moveToNext();
}
String type = userCursor.getString(userCursor.getColumnIndex(CalendarContract.Calendars.ACCOUNT_TYPE));
if (type.equals(CALENDARS_ACCOUNT_TYPE)) {
return userCursor.getInt(userCursor.getColumnIndex(CalendarContract.Calendars._ID));
}
}
}
return -1;
} finally {
if (userCursor != null) {
userCursor.close();
}
}
}
增加办法
其实增加办法就和咱们平常操作数据库十分相似,便是拼装数据,放入到数据表中
private static String CALENDARS_NAME = "TaskList";
private static String CALENDARS_ACCOUNT_NAME = "MyTaskList";
private static String CALENDARS_ACCOUNT_TYPE = "MyTaskList";
/**
* 这儿创立账户的展现称号,体系日历为咱们供给了创立账户的入口,那咱们就不运用体系自带的账户,创立一个自己app的账户
*/
private static String CALENDARS_DISPLAY_NAME = "靠谱的使命清单";
/**
* 增加日历账户,账户创立成功则回来账户id,不然回来-1
*/
private static long addCalendarAccount(Context context) {
TimeZone timeZone = TimeZone.getDefault();
ContentValues value = new ContentValues();
value.put(CalendarContract.Calendars.NAME, CALENDARS_NAME);
value.put(CalendarContract.Calendars.ACCOUNT_NAME, CALENDARS_ACCOUNT_NAME);
value.put(CalendarContract.Calendars.ACCOUNT_TYPE, CALENDARS_ACCOUNT_TYPE);
value.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, CALENDARS_DISPLAY_NAME);
// 可见度
value.put(CalendarContract.Calendars.VISIBLE, 1);
// 日历色彩
value.put(CalendarContract.Calendars.CALENDAR_COLOR, Color.BLUE);
// 权限
value.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER);
value.put(CalendarContract.Calendars.SYNC_EVENTS, 1);
// 时区
value.put(CalendarContract.Calendars.CALENDAR_TIME_ZONE, timeZone.getID());
value.put(CalendarContract.Calendars.OWNER_ACCOUNT, CALENDARS_ACCOUNT_NAME);
value.put(CalendarContract.Calendars.CAN_ORGANIZER_RESPOND, 0);
Uri calendarUri = CalendarContract.Calendars.CONTENT_URI;
calendarUri = calendarUri.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, CALENDARS_ACCOUNT_NAME)
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, CALENDARS_ACCOUNT_TYPE)
.build();
Uri result = context.getContentResolver().insert(calendarUri, value);
long id = result == null ? -1 : ContentUris.parseId(result);
return id;
}
在拥有查看和创立办法后,咱们去笼统一个条件判别办法,来用于一次调用完结创立日历账户 查看的完结流程
checkAndAddCalendarAccount
/**
* 查看是否现已增加了日历账户,假如没有增加先增加一个日历账户再查询
* 获取账户成功回来账户id,不然回来-1
*/
@RequiresApi(api = Build.VERSION_CODES.N)
private static int checkAndAddCalendarAccount(Context context) {
int oldId = checkCalendarAccount(context);
if (oldId >= 0) {
return oldId;
} else {
long addId = addCalendarAccount(context);
if (addId >= 0) {
return checkCalendarAccount(context);
} else {
return -1;
}
}
}
3、拼装数据,增加日程
这个其实就比较简单了 ,便是为数据表增加行数和内容
-
查看日历账户 而且获取id
-
拼装event 新增event
-
依据isAlarm判别是否需求增加闹钟提示
-
在event数据中
event.put(CalendarContract.Events.HAS_ALARM, 1);是用于老版别安卓的闹钟提示 比较新的国内安卓版别都不在依据这个字段来判别了
-
新一些的安卓版别 运用ExtendedProperties 来增加额外特点,现在已知miui的高版别是需求设置
extendedProperties.put(CalendarContract.ExtendedProperties.VALUE, "{"need_alarm":true}");而且账户内容要是咱们自己创立的账户才能够完结闹钟提示
PS: 在封装东西类前 我是用体系默许用户 无法设置 不知道原因
-
-
设置 Reminders 日程提示办法等
-
完结日程设置
调用完这个办法你就能够发现日历里 有对应的日程了
/**
* 这个是要害办法,调用刺进日程提示
*
* @param context
* @param eventId 事情id
* @param title 提示事情标题
* @param description 事情描述
* @param reminderTime 使命开端时刻,这儿参数名不太合适,后边会加提示时刻,
* @param endTime 使命完毕时刻
* @param previousMinutes 提早多少分钟提示,后续运用
* @param isAlarm 是否需求闹钟提示
*/
@RequiresApi(api = Build.VERSION_CODES.N)
@SuppressLint("Range")
public static Long addCalendarEvent(Context context, long eventId, String title, String description, long reminderTime, long endTime, int previousMinutes, boolean isAlarm) {
if (context == null) {
return -1L;
}
int calId = checkAndAddCalendarAccount(context); //获取日历账户的id
if (calId < 0) { //获取账户id失利直接回来,增加日历事情失利
return -1L;
}
//增加日历事情
Calendar mCalendar = Calendar.getInstance();
mCalendar.setTimeInMillis(reminderTime);//设置开端时刻
long start = mCalendar.getTime().getTime();
mCalendar.setTimeInMillis(endTime);//设置停止时刻
long end = mCalendar.getTime().getTime();
ContentValues event = new ContentValues();
event.put("title", title);
event.put("description", description);
event.put("calendar_id", calId); //刺进账户的id
event.put("eventStatus", 1);
event.put(CalendarContract.Events._ID, eventId);
event.put(CalendarContract.Events.HAS_EXTENDED_PROPERTIES, true);
event.put(CalendarContract.Events.DTSTART, start);
event.put(CalendarContract.Events.DTEND, end);
if (isAlarm) {
event.put(CalendarContract.Events.HAS_ALARM, 1);//设置有闹钟提示,但是经测验,此方案无效
}
event.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getDisplayName());//这个是时区,必须有
Uri newEvent = context.getContentResolver().insert(CalendarContract.Events.CONTENT_URI, event); //增加事情
if (newEvent == null) { //增加日历事情失利直接回来
return -1L;
}
//扩展特点 用于高版别安卓体系设置闹钟提示
if (isAlarm) {
Uri extendedPropUri = CalendarContract.ExtendedProperties.CONTENT_URI;
extendedPropUri = extendedPropUri.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, CALENDARS_ACCOUNT_NAME)
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, CALENDARS_ACCOUNT_TYPE).build();
ContentValues extendedProperties = new ContentValues();
extendedProperties.put(CalendarContract.ExtendedProperties.EVENT_ID, ContentUris.parseId(newEvent));
extendedProperties.put(CalendarContract.ExtendedProperties.VALUE, "{"need_alarm":true}");
extendedProperties.put(CalendarContract.ExtendedProperties.NAME, "agenda_info");
Uri uriExtended = context.getContentResolver().insert(extendedPropUri, extendedProperties);
if (uriExtended == null) { //增加事情提示失利直接回来
return -1L;
}
}
//事情提示的设定
ContentValues values = new ContentValues();
values.put(CalendarContract.Reminders.EVENT_ID, ContentUris.parseId(newEvent));
values.put(CalendarContract.Reminders.MINUTES, 0);// 提早previousDate天有提示
values.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT);
Uri uri = context.getContentResolver().insert(CalendarContract.Reminders.CONTENT_URI, values);
if (uri == null) { //增加事情提示失利直接回来
return -1L;
}
Toast.makeText(context, "设置日程成功!!!", Toast.LENGTH_LONG).show();
return eventId;
}
4、 删去日程
这个就比较简单,由于咱们是自界说日程id 所以咱们直接经过传入的id 删去对应的日程即可,网上的东西类都是用title 容易删去同名日程
/**
* 删去日历事情
*/
public static void deleteCalendarEvent(Context context, Long delEventID) {
if (context == null) {
return;
}
Uri deleteUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, delEventID);
int rows = context.getContentResolver().delete(deleteUri, null, null);
if (rows == -1) { //事情删去失利
return;
}
}
东西类代码
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.provider.CalendarContract;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.RequiresApi;
import java.util.Calendar;
import java.util.TimeZone;
public class CalendarReminderUtils {
private static String CALENDARS_NAME = "TaskList";
private static String CALENDARS_ACCOUNT_NAME = "MyTaskList";
private static String CALENDARS_ACCOUNT_TYPE = "MyTaskList";
/**
* 这儿创立账户的展现称号,体系日历为咱们供给了创立账户的入口,那咱们就不运用体系自带的账户,创立一个自己app的账户
*/
private static String CALENDARS_DISPLAY_NAME = "靠谱的使命清单";
/**
* 查看是否现已增加了日历账户,假如没有增加先增加一个日历账户再查询
* 获取账户成功回来账户id,不然回来-1
*/
@RequiresApi(api = Build.VERSION_CODES.N)
private static int checkAndAddCalendarAccount(Context context) {
int oldId = checkCalendarAccount(context);
if (oldId >= 0) {
return oldId;
} else {
long addId = addCalendarAccount(context);
if (addId >= 0) {
return checkCalendarAccount(context);
} else {
return -1;
}
}
}
/**
* 查看是否存在现有账户,存在则回来账户id,不然回来-1
*/
@SuppressLint("Range")
private static int checkCalendarAccount(Context context) {
Cursor userCursor = context.getContentResolver().query(CalendarContract.Calendars.CONTENT_URI, null, null, null, null);
try {
if (userCursor == null) { //查询回来空值
return -1;
}
int count = userCursor.getCount();
if (count > 0) { //存在现有账户,取第一个账户的id回来
for (int i = 0; i <= count - 1; i++) {
if (i == 0) {
userCursor.moveToFirst();
} else {
userCursor.moveToNext();
}
String type = userCursor.getString(userCursor.getColumnIndex(CalendarContract.Calendars.ACCOUNT_TYPE));
if (type.equals(CALENDARS_ACCOUNT_TYPE)) {
return userCursor.getInt(userCursor.getColumnIndex(CalendarContract.Calendars._ID));
}
}
}
return -1;
} finally {
if (userCursor != null) {
userCursor.close();
}
}
}
/**
* 增加日历账户,账户创立成功则回来账户id,不然回来-1
*/
private static long addCalendarAccount(Context context) {
TimeZone timeZone = TimeZone.getDefault();
ContentValues value = new ContentValues();
value.put(CalendarContract.Calendars.NAME, CALENDARS_NAME);
value.put(CalendarContract.Calendars.ACCOUNT_NAME, CALENDARS_ACCOUNT_NAME);
value.put(CalendarContract.Calendars.ACCOUNT_TYPE, CALENDARS_ACCOUNT_TYPE);
value.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, CALENDARS_DISPLAY_NAME);
// 可见度
value.put(CalendarContract.Calendars.VISIBLE, 1);
// 日历色彩
value.put(CalendarContract.Calendars.CALENDAR_COLOR, Color.BLUE);
// 权限
value.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER);
value.put(CalendarContract.Calendars.SYNC_EVENTS, 1);
// 时区
value.put(CalendarContract.Calendars.CALENDAR_TIME_ZONE, timeZone.getID());
value.put(CalendarContract.Calendars.OWNER_ACCOUNT, CALENDARS_ACCOUNT_NAME);
value.put(CalendarContract.Calendars.CAN_ORGANIZER_RESPOND, 0);
Uri calendarUri = CalendarContract.Calendars.CONTENT_URI;
calendarUri = calendarUri.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, CALENDARS_ACCOUNT_NAME)
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, CALENDARS_ACCOUNT_TYPE)
.build();
Uri result = context.getContentResolver().insert(calendarUri, value);
long id = result == null ? -1 : ContentUris.parseId(result);
return id;
}
/**
* 这个是要害办法,调用刺进日程提示
*
* @param context
* @param eventId 事情id
* @param title 提示事情标题
* @param description 事情描述
* @param reminderTime 使命开端时刻,这儿参数名不太合适,后边会加提示时刻,
* @param endTime 使命完毕时刻
* @param previousMinutes 提早多少分钟提示,后续运用
* @param isAlarm 是否需求闹钟提示
*/
@RequiresApi(api = Build.VERSION_CODES.N)
@SuppressLint("Range")
public static Long addCalendarEvent(Context context, long eventId, String title, String description, long reminderTime, long endTime, int previousMinutes, boolean isAlarm) {
if (context == null) {
return -1L;
}
int calId = checkAndAddCalendarAccount(context); //获取日历账户的id
if (calId < 0) { //获取账户id失利直接回来,增加日历事情失利
return -1L;
}
//增加日历事情
Calendar mCalendar = Calendar.getInstance();
mCalendar.setTimeInMillis(reminderTime);//设置开端时刻
long start = mCalendar.getTime().getTime();
mCalendar.setTimeInMillis(endTime);//设置停止时刻
long end = mCalendar.getTime().getTime();
ContentValues event = new ContentValues();
event.put("title", title);
event.put("description", description);
event.put("calendar_id", calId); //刺进账户的id
event.put("eventStatus", 1);
event.put(CalendarContract.Events._ID, eventId);
event.put(CalendarContract.Events.HAS_EXTENDED_PROPERTIES, true);
event.put(CalendarContract.Events.DTSTART, start);
event.put(CalendarContract.Events.DTEND, end);
if (isAlarm) {
event.put(CalendarContract.Events.HAS_ALARM, 1);//设置有闹钟提示,但是经测验,此方案无效
}
event.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getDisplayName());//这个是时区,必须有
Uri newEvent = context.getContentResolver().insert(CalendarContract.Events.CONTENT_URI, event); //增加事情
if (newEvent == null) { //增加日历事情失利直接回来
return -1L;
}
//扩展特点 用于高版别安卓体系设置闹钟提示
if (isAlarm) {
Uri extendedPropUri = CalendarContract.ExtendedProperties.CONTENT_URI;
extendedPropUri = extendedPropUri.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, CALENDARS_ACCOUNT_NAME)
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, CALENDARS_ACCOUNT_TYPE).build();
ContentValues extendedProperties = new ContentValues();
extendedProperties.put(CalendarContract.ExtendedProperties.EVENT_ID, ContentUris.parseId(newEvent));
extendedProperties.put(CalendarContract.ExtendedProperties.VALUE, "{"need_alarm":true}");
extendedProperties.put(CalendarContract.ExtendedProperties.NAME, "agenda_info");
Uri uriExtended = context.getContentResolver().insert(extendedPropUri, extendedProperties);
if (uriExtended == null) { //增加事情提示失利直接回来
return -1L;
}
}
//事情提示的设定
ContentValues values = new ContentValues();
values.put(CalendarContract.Reminders.EVENT_ID, ContentUris.parseId(newEvent));
values.put(CalendarContract.Reminders.MINUTES, 0);// 提早previousDate天有提示
values.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT);
Uri uri = context.getContentResolver().insert(CalendarContract.Reminders.CONTENT_URI, values);
if (uri == null) { //增加事情提示失利直接回来
return -1L;
}
Toast.makeText(context, "设置日程成功!!!", Toast.LENGTH_LONG).show();
return eventId;
}
/**
* 删去日历事情
*/
public static void deleteCalendarEvent(Context context, Long delEventID) {
if (context == null) {
return;
}
Uri deleteUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, delEventID);
int rows = context.getContentResolver().delete(deleteUri, null, null);
if (rows == -1) { //事情删去失利
return;
}
}
/**
* 查询日历日程相关的数据库表(查询其他表也适用),办法将查询表的一切列的一切行都展现出来了,便是这么人性化
*
* @param uri 用来区别查询的表的类型,查询不同的表,运用不同的URI即可,其他的都相同
*/
@SuppressLint("Range")
public void queryCalendarData(Uri uri, Activity context) {
Cursor cursor = context.getContentResolver().query(uri, null,
null, null, null);
while (cursor.moveToNext()) {
int columnCount = cursor.getColumnCount();
Log.e("TAG", "columnCount :" + columnCount);//多少个特点
for (int i = 0; i < columnCount; i++) {
//获取到特点的称号
String columnName = cursor.getColumnName(i);
//获取到特点对应的值
String message = cursor.getString(cursor.getColumnIndex(columnName));
//打印特点和对应的值
Log.e("TAG", columnName + " : " + message);
}
}
}
}
Demo
页面布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:id="@+id/deleteEventButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="delete a Event" />
<Button
android:id="@+id/writeEventButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Input a Event" />
</LinearLayout>
Activity
public class CalenderDemoActivity extends AppCompatActivity implements View.OnClickListener {
private Button mDeleteEventButton;
private Button mWriteEventButton;
final int callbackId = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calender_demo);
checkPermission(callbackId, Manifest.permission.READ_CALENDAR, Manifest.permission.WRITE_CALENDAR);
setupViews();
}
private void checkPermission(int callbackId, String... permissionsId) {
boolean permissions = true;
for (String p : permissionsId) {
permissions = permissions && ContextCompat.checkSelfPermission(this, p) == PERMISSION_GRANTED;
}
if (!permissions)
ActivityCompat.requestPermissions(this, permissionsId, callbackId);
}
private void setupViews() {
mDeleteEventButton = (Button) findViewById(R.id.deleteEventButton);
mWriteEventButton = (Button) findViewById(R.id.writeEventButton);
mDeleteEventButton.setOnClickListener(this);
mWriteEventButton.setOnClickListener(this);
}
/**
* 查看是否存在现有账户,存在则回来账户id,不然回来-1
*/
/**
* 增加日历账户,账户创立成功则回来账户id,不然回来-1
*/
@SuppressLint("Range")
@Override
public void onClick(View v) {
Long eventId = Long.parseLong(String.valueOf((int)Math.random()*999+1));
if (v == mWriteEventButton) {
Calendar mCalendar = Calendar.getInstance();
mCalendar.setTimeInMillis(System.currentTimeMillis() + 1 * 60 * 1000);
long start = mCalendar.getTime().getTime();
mCalendar.setTimeInMillis(start + 1 * 60 * 1000);
long end = mCalendar.getTime().getTime();
CalendarReminderUtils.addCalendarEvent(this, eventId,"工作提示", "该休息啦", start, end, 0,true);
Log.d("============eventid", "onClick: " + eventId);
} else if (v == mDeleteEventButton) {
// CalendarReminderUtils.queryCalendarData(CalendarContract.Calendars.CONTENT_URI, this);
CalendarReminderUtils.deleteCalendarEvent(this, eventId);
}
}
}



