2011-08-02 5 views
-1

Android 애플리케이션에서 캘린더에서 이벤트를 찾고 선택하는 것을 구현하려고합니다. 나는 그것을 발견하고 완전히 다른 구현을 선택 믿습니다.Android에서 일정 캘린더를 찾고 선택하는 방법은 무엇인가요?

나는 웹을 아무 쓸데없이 닦았다. 나는 도움의 손길에 감사 할 것입니다.

+0

무엇이 의미를 찾고 선택합니까 – kannappan

+0

귀하의 질문을 이해할 수 없지만 자세히 설명하려고 할 수 있습니다. 찾기 이벤트는 기본적으로 시작 날짜, 종료 날짜 또는 설명과 같은 검색 매개 변수를 기반으로 이벤트를 찾는 데 사용되며 select 이벤트는 기본 선택 쿼리입니다. – user788511

답변

5

manifest

<uses-permission android:name="android.permission.READ_CALENDAR" /> 

이러한 예 < = 2.1 버전이다;

처음; 달력

Cursor cursor = cr.query(Uri.parse("content://calendar/calendars"), new String[]{ "_id", "displayname" }, null, null, null); 
cursor.moveToFirst(); 
String[] CalNames = new String[cursor.getCount()]; 
int[] CalIds = new int[cursor.getCount()]; 
for (int i = 0; i < CalNames.length; i++) { 
    CalIds[i] = cursor.getInt(0); 
    CalNames[i] = cursor.getString(1); 
    cursor.moveToNext(); 
} 
cursor.close(); 

이 모든 이벤트를 가져 오기 존재하고, 특정 이벤트가 범위
ContentResolver contentResolver = getContentResolver()을 지정하여 수행되는 찾을;

Uri.Builder builder = Uri.parse(getCalendarUriBase() + "/instances/when").buildUpon(); 
     long now = new Date().getTime(); 
     ContentUris.appendId(builder, now - DateUtils.MILLIS_PER_DAY*10000); 
     ContentUris.appendId(builder, now + DateUtils.MILLIS_PER_DAY * 10000); 

다음의 사용자가 ID 달력에서 이벤트 ID를 기록 할 말을 할 수는 =

Cursor eventCursor = contentResolver.query(builder.build(), 
       new String[] { "event_id"}, "Calendars._id=" + 1, 
       null, "startDay ASC, startMinute ASC"); 
     // For a full list of available columns see http://tinyurl.com/yfbg76w 
     while (eventCursor.moveToNext()) { 
      String uid2 = eventCursor.getString(0); 
      Log.v("eventID : ", uid2); 

     } 

일부 소스 코드에 대한 1 체크 Jim Blackler's Accessing the internal calendar database inside Google Android applicationsAndroid Calendar Events

+0

Sheriff에게 감사드립니다. 구현을 살펴보고 다시 알려 드리겠습니다. – user788511

+0

Sherif, 제공 한 기사에서 이벤트 선택에 대해 설명하지만 검색 매개 변수를 기반으로 이벤트를 찾는 방법은 무엇입니까? – user788511

+0

나는 대답을 편집했다. 그건 그렇고, 다소 쉽습니다 –

0

은 2.2입니다 + 버전 전용

캘린더에서 이벤트를 추가하려면 아래 코드를 사용합니다.

if (Build.VERSION.SDK_INT >= 14) { 
      Calendar cal = Calendar.getInstance(); 
      Intent intent = new Intent(Intent.ACTION_INSERT) 
        .setData(Events.CONTENT_URI) 
        /* 
        * .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, 
        * beginTime.getTimeInMillis()) 
        * .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, 
        * endTime.getTimeInMillis()) 
        */ 
        .putExtra(Events.TITLE, 
          "A Test Event from android app by Neha ") 
        . 

        putExtra("beginTime", cal.getTimeInMillis()) 
        .putExtra("allDay", true) 
        .putExtra("rrule", "FREQ=YEARLY") 
        .putExtra("endTime", 
          cal.getTimeInMillis() + 60 * 60 * 1000) 
        .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY); 
      startActivity(intent); 
     } 

     else { 
      Calendar cal = Calendar.getInstance(); 
      Intent intent = new Intent(Intent.ACTION_EDIT); 
      intent.setType("vnd.android.cursor.item/event"); 
      intent.putExtra("beginTime", cal.getTimeInMillis()); 
      intent.putExtra("allDay", true); 
      intent.putExtra("rrule", "FREQ=YEARLY"); 
      intent.putExtra("endTime", 
        cal.getTimeInMillis() + 60 * 60 * 1000); 
      intent.putExtra("title", 
        "A Test Event from android app by Neha"); 
      startActivity(intent); 
     } 

와 나는 아래의 코드는

공공 긴 GetMaxID() {

ContentResolver contentResolver = getContentResolver(); 

    Uri local_uri; 
    local_uri = Uri.parse("content://com.android.calendar/events"); 

    Cursor cursor = contentResolver.query(local_uri, new String[] { 
      "_id as max_id", "dtstart", "dtend" }, null, null, "_id"); 

    cursor.moveToFirst(); 
    long max_val = cursor.getLong(cursor.getColumnIndex("max_id")); 

    startDate = cursor.getLong(cursor.getColumnIndex("dtstart")); 
    endDate = cursor.getLong(cursor.getColumnIndex("dtend")); 

    return max_val + 1; 

} 

으로 이벤트를

long calendarEventID = GetMaxID(); 
     Uri uri = Uri.parse("content://com.android.calendar/events/" 
       + String.valueOf(calendarEventID)); 

     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(uri); 

     intent.putExtra("beginTime", startDate); 
     intent.putExtra("endTime", endDate); 
     startActivity(intent); 

및 GetMaxId을 편집하고 menifest에 권한을 넣어 사용

<uses-permission android:name="android.permission.WRITE_CALENDAR"></uses-permission> 
<uses-permission android:name="android.permission.READ_CALENDAR"></uses-permission> 

누군가에게 도움이되기를 바랍니다.

관련 문제