Đồng bộ dữ liệu event từ app vào calendar

Đồ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:
public 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 name      
         String calendarNames[] = new String[cur.getCount()];
      // Get calendars id    
        long[] calendarId = new long[cur.getCount()];
        while (cur.moveToNext()) {
            calendarId[0] = cur.getLong(PROJECTION_ID_INDEX);
        }
        return calendarId;
    }

Adding Events
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
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ữ

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