Đồng bộ event từ app vào calendar system
Cũng giống như sử dụng sqlite trong android.Android cung cấp một api là Calendar Provider chấp nhận thêm,sửa xóa ,query,update
Calendar có rất nhiều loại theo từng thiết bị,vì thế trước tiên chúng ta phải tìm được calendar id bằng cách:
Adding Eventspublic static final String[] EVENT_PROJECTION = new String[]{ CalendarContract.Calendars._ID, // 0 CalendarContract.Calendars.ACCOUNT_NAME, // 1 CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, // 2 CalendarContract.Calendars.OWNER_ACCOUNT // 3}; // The indices for the projection array above.private static final int PROJECTION_ID_INDEX = 0;public static long[] getCalendarId(Context c) { Cursor cur = null; ContentResolver cr = c.getContentResolver(); Uri uri = CalendarContract.Calendars.CONTENT_URI; // Submit the query and get a Cursor object back.cur = cr.query(uri, EVENT_PROJECTION, null, null, null); // Get calendars nameString calendarNames[] = new String[cur.getCount()]; // Get calendars idlong[] calendarId = new long[cur.getCount()]; while (cur.moveToNext()) { calendarId[0] = cur.getLong(PROJECTION_ID_INDEX); } return calendarId; }
long calID = 3;=>id của calendar
long startMillis = 0;
long endMillis = 0;
Calendar beginTime = Calendar.getInstance();=>tạo 1 calendar lưu trữ time
beginTime.set(2012, 9, 14, 7, 30);=>set thời gian
startMillis = beginTime.getTimeInMillis();=>lấy ra timeMilis
Calendar endTime = Calendar.getInstance();
endTime.set(2012, 9, 14, 8, 45);
endMillis = endTime.getTimeInMillis();
ContentResolver cr = getContentResolver();=>khởi tạo dùng để gọi đến insert,update
long startMillis = 0;
long endMillis = 0;
Calendar beginTime = Calendar.getInstance();=>tạo 1 calendar lưu trữ time
beginTime.set(2012, 9, 14, 7, 30);=>set thời gian
startMillis = beginTime.getTimeInMillis();=>lấy ra timeMilis
Calendar endTime = Calendar.getInstance();
endTime.set(2012, 9, 14, 8, 45);
endMillis = endTime.getTimeInMillis();
ContentResolver cr = getContentResolver();=>khởi tạo dùng để gọi đến insert,update
ContentValues values = new ContentValues();=>lưu trữ data Event
values.put(Events.DTSTART, startMillis);=>thời gian bắt đầu,sử dụng millistime
values.put(Events.DTEND, endMillis);=>thời gian kết thúc,sử dụng millistime
values.put(Events.TITLE, "Jazzercise");=>tên event
values.put(Events.DESCRIPTION, "Group workout");=>mô tả event
values.put(Events.CALENDAR_ID, calID);=>id của calendar,nên để chung 1 id,vd id=3
values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");=>set timezone,hoặc để default->TimeZone.getDefault().getID();
Uri uri = cr.insert(Events.CONTENT_URI, values);=>thực hiện insert
// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());=> sau khi insert sẽ nhận đc idEvent->dùng để update,delete,reminder,...Có thể dùng SharePreferences để lưu dữ
values.put(Events.DTSTART, startMillis);=>thời gian bắt đầu,sử dụng millistime
values.put(Events.DTEND, endMillis);=>thời gian kết thúc,sử dụng millistime
values.put(Events.TITLE, "Jazzercise");=>tên event
values.put(Events.DESCRIPTION, "Group workout");=>mô tả event
values.put(Events.CALENDAR_ID, calID);=>id của calendar,nên để chung 1 id,vd id=3
values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");=>set timezone,hoặc để default->TimeZone.getDefault().getID();
Uri uri = cr.insert(Events.CONTENT_URI, values);=>thực hiện insert
// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());=> sau khi insert sẽ nhận đc idEvent->dùng để update,delete,reminder,...Có thể dùng SharePreferences để lưu dữ
Updating Events
long eventID = 188;=>id event có được khi insert event ... ContentResolver cr = getContentResolver();=>khai báo giúp thực hiện các hành động update,insert,delete ContentValues values = new ContentValues();=>khai báo class thực hiện lưu trữ Uri updateUri = null; // The new title for the event values.put(Events.TITLE, "Kickboxing");=>tiêu đề cần thay đổi updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);=>update tại eventid nào
int rows = getContentResolver().update(updateUri, values, null, null);=>trả về 1 là thành công,trả về 0 là err Log.i(DEBUG_TAG, "Rows updated: " + rows);
Deleting Events
long eventID = 201; ... ContentResolver cr = getContentResolver(); ContentValues values = new ContentValues(); Uri deleteUri = null; deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID); int rows = getContentResolver().delete(deleteUri, null, null); Log.i(DEBUG_TAG, "Rows deleted: " + rows);
0 nhận xét:
Đăng nhận xét