Google Calendar와 동기화 하는 방법을 찾다가 Java에서는 쉽게 구현 가능하지만,
마지막줄에 </string></string></string></string>이 자꾸 붙네요-_-
Android와 Google Calendar API가 궁합이 맞지 않다는 것을 알고 우회하기로 하였다.
어차피 내장 Calendar는 Google Calendar와 자동으로 동기화가 되니,
내장 Calendar에서 값을 읽어 오기로 하였다.
// Main.java package com.calendar; import java.util.ArrayList; import java.util.List; import android.app.ListActivity; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.widget.ArrayAdapter; import android.widget.ListView; public class Main extends ListActivity { /** Called when the activity is first created. */ ArrayAdaptermArrayAdapter; List mItems = new ArrayList (); ListView mListView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mListView = (ListView)findViewById(android.R.id.list); setCalendar(); } public void setCalendar () { Uri calendars = Uri.parse("content://com.android.calendar/events"); String[] projection = new String[] { "calendar_id", "htmlUri", "title", "eventLocation", "description", "eventStatus", "selfAttendeeStatus", "commentsUri", "dtstart", "dtend", "eventTimezone", "duration", "allDay", "visibility", "transparency", "hasAlarm", "hasExtendedProperties", "rrule", "rdate", "exrule", "exdate", "originalEvent", "originalInstanceTime", "originalAllDay", "lastDate", "hasAttendeeData", "guestsCanModify", "guestsCanInviteOthers", "guestsCanSeeGuests", "organizer", "deleted" } ; Cursor managedCursor = getContentResolver().query(calendars, projection, "selected=1", null, null) ; if(managedCursor.moveToFirst()) { int[] calendar_id = new int[managedCursor.getCount()]; String[] htmlUri = new String[managedCursor.getCount()]; String[] title = new String[managedCursor.getCount()]; String[] eventLocation = new String[managedCursor.getCount()]; String[] description = new String[managedCursor.getCount()]; int[] eventStatus = new int[managedCursor.getCount()]; int[] selfAttendeeStatus = new int[managedCursor.getCount()]; String[] commentsUri = new String[managedCursor.getCount()]; int[] dtstart = new int[managedCursor.getCount()]; int[] dtend = new int[managedCursor.getCount()]; String[] eventTimezone = new String[managedCursor.getCount()]; String[] duration = new String[managedCursor.getCount()]; int[] allDay = new int[managedCursor.getCount()]; int[] visibility = new int[managedCursor.getCount()]; int[] transparency = new int[managedCursor.getCount()]; int[] hasAlarm = new int[managedCursor.getCount()]; int[] hasExtendedProperties = new int[managedCursor.getCount()]; String[] rrule = new String[managedCursor.getCount()]; String[] rdate = new String[managedCursor.getCount()]; String[] exrule = new String[managedCursor.getCount()]; String[] exdate = new String[managedCursor.getCount()]; String[] originalEvent = new String[managedCursor.getCount()]; int[] originalInstanceTime = new int[managedCursor.getCount()]; int[] originalAllDay = new int[managedCursor.getCount()]; int[] lastDate = new int[managedCursor.getCount()]; int[] hasAttendeeData = new int[managedCursor.getCount()]; int[] guestsCanModify = new int[managedCursor.getCount()]; int[] guestsCanInviteOthers = new int[managedCursor.getCount()]; int[] guestsCanSeeGuests = new int[managedCursor.getCount()]; String[] organizer = new String[managedCursor.getCount()]; int[] deleted = new int[managedCursor.getCount()]; for (int i = 0 ; i < title.length ; i++) { calendar_id[i] = managedCursor.getInt(0); Log.i("Calendar", "ID : " + calendar_id[i]); htmlUri[i] = managedCursor.getString(1); Log.i("Calendar", "htmlUri : " + htmlUri[i]); title[i] = managedCursor.getString(2); Log.i("Calendar", "title : " + title[i]); eventLocation[i] = managedCursor.getString(3); Log.i("Calendar", "eventLocation : " + eventLocation[i]); description[i] = managedCursor.getString(4); eventStatus[i] = managedCursor.getInt(5); selfAttendeeStatus[i] = managedCursor.getInt(6); commentsUri[i] = managedCursor.getString(7); dtstart[i] = managedCursor.getInt(8); dtend[i] = managedCursor.getInt(9); eventTimezone[i] = managedCursor.getString(10); duration[i] = managedCursor.getString(11); allDay[i] = managedCursor.getInt(12); visibility[i] = managedCursor.getInt(13); transparency[i] = managedCursor.getInt(14); hasAlarm[i] = managedCursor.getInt(15); hasExtendedProperties[i] = managedCursor.getInt(16); rrule[i] = managedCursor.getString(17); rdate[i] = managedCursor.getString(18); exrule[i] = managedCursor.getString(19); exdate[i] = managedCursor.getString(20); originalEvent[i] = managedCursor.getString(21); originalInstanceTime[i] = managedCursor.getInt(22); originalAllDay[i] = managedCursor.getInt(23); lastDate[i] = managedCursor.getInt(24); hasAttendeeData[i] = managedCursor.getInt(25); guestsCanModify[i] = managedCursor.getInt(26); guestsCanInviteOthers[i] = managedCursor.getInt(27); guestsCanSeeGuests[i] = managedCursor.getInt(28); organizer[i] = managedCursor.getString(29); deleted[i] = managedCursor.getInt(30); if (title[i] != null) { mItems.add(title[i]); } managedCursor.moveToNext() ; } managedCursor.close(); mArrayAdapter = new ArrayAdapter (this, android.R.layout.simple_list_item_1, mItems); mListView = (ListView)findViewById (android.R.id.list); mListView.setAdapter(mArrayAdapter); mListView.setItemsCanFocus(true); } } }
마지막줄에 </string></string></string></string>이 자꾸 붙네요-_-
무시하세요.
LISTVIEW 와 LINEARLAYOUT 이 모두 대문자로 적혀있는데, 수정이 안되네요-_-;;ListView, LinearLayout 으로 수정해서 사용하시기 바랍니다.
// main.xml
LISTVIEW 와 LINEARLAYOUT 이 모두 대문자로 적혀있는데, 수정이 안되네요-_-;;ListView, LinearLayout 으로 수정해서 사용하시기 바랍니다.
// AndroidManifest.xml
'About Programing > 05. Android' 카테고리의 다른 글
Android에서 기기 계정 정보 가져오기 (0) | 2011.03.07 |
---|---|
Android 내장 메모리의 사진 정보 가져오기 (7) | 2011.02.28 |
Android EditText의 InputType 설정값 (1) | 2011.01.07 |
Android Service에서 Activity 실행하기 (0) | 2011.01.06 |
Android에서 URI로 실제 파일 경로 가져오기 (16) | 2011.01.04 |