2011-08-02 8 views
-1

Androidアプリケーションでカレンダーの予定を見つけて選択することを実装しようとしています。私は、それを見つけると選択は完全に異なる実装を持っていると信じています。Androidでイベントカレンダーを見つけて選択するにはどうすればよいですか?

私は無駄にウェブを洗った。私は救いの手を感謝します。

+0

検索と選択の意味は – kannappan

+0

私はあなたの質問を理解していないが、私は詳しく説明しようとすることができます。検索イベントは開始日、終了日、説明などの検索パラメータに基づいてイベントを特定するために使用されます。selectイベントは基本的な選択クエリです。 – user788511

答えて

5

manifest

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

これらの実施例は< = 2.1バージョンのためのものです。

first;カレンダーは

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

して、あなたが= 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); 

     } 

IDでカレンダーからイベントのIDを記録したいとしようと、いくつかソースコードチェック Jim Blackler's Accessing the internal calendar database inside Google Android applicationsAndroid Calendar Events

+0

Sherifに感謝します。実装を見てみましょう。私はあなたにお返しします。 – 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> 

誰かにも役立つことを願っています。

関連する問題