2011-08-02 47 views
-1

我正試圖在Android應用程序的日曆中實現查找和選擇事件。我相信,找到並選擇具有完全不同的實現。如何在Android中查找和選擇事件日曆?

我已經搜遍網絡無濟於事。我將不勝感激。

+0

是什麼意思找到並選擇 – kannappan

+0

我不明白你的問題,但我可以試着詳細說明。 find事件基本上用於根據搜索參數(如開始日期,結束日期或描述)查找事件,而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 = 1

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); 

     } 

和一些源代碼檢查 Jim Blackler's Accessing the internal calendar database inside Google Android applicationsAndroid Calendar Events

+0

謝謝謝里夫,讓我看看執行情況,我會盡快回復您。 – user788511

+0

謝里夫,你提供的文章解釋了一個事件的選擇,但是,如何根據搜索參數找到一個事件? – 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); 
     } 

和下面我的代碼用於編輯事件

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作爲

公共長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; 

} 

,並把允許在menifest如

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

希望這對別人也有幫助。