2012-04-11 6 views
2

アンドロイド4.0以降のカレンダーイベントを追加したいと思います。 現在、私は、次のコードを使用してイベントを追加していAndroid 4.0でカレンダーと予定を追加

if (android.os.Build.VERSION.SDK_INT <= 7) 
        { 
         Uri calendars = Uri.parse("content://calendar/calendars"); 
         Cursor managedCursor = managedQuery(calendars, projection, null, null, null); 
         if (managedCursor.moveToFirst()) 
         { 
          String calName; 
          String calId; 
          int nameColumn = managedCursor.getColumnIndex("name"); 
          int idColumn = managedCursor.getColumnIndex("_id"); 
          do 
          { 
           calName = managedCursor.getString(nameColumn); 
           calId = managedCursor.getString(idColumn); 
           Log.e("Calendar Id : ",""+calId+" : "+calName); 
          } 
          while (managedCursor.moveToNext()); 

          if(calId != null) 
          { 
           try 
           { 
            Log.e("Calendar Id : ",""+calId+" : "+calName); 
            ContentValues event = new ContentValues(); 
            event.put("calendar_id", calId); 
            event.put("title", summary); 
            event.put("description", summary); 
            event.put("eventLocation", ""); 

            event.put("dtstart", startTime); 
            event.put("dtend", endTime); 
            event.put("allDay", allDayFlag); 
            event.put("eventStatus", 1); 
            event.put("visibility", 0); 
            event.put("hasAlarm", 1); 
            Uri eventsUri = Uri.parse("content://calendar/events"); 
            Uri url = getContentResolver().insert(eventsUri, event); 
            Log.e("Event Res : ",""+url); 
            if(!url.equals("")) 
            Main.showErrorDialog(this, "Event Successfully Added "); 
           } 
           catch (Exception kwse) 
           { 
            Log.e("Exception 1 kwse ",""+kwse.toString()); 
           } 
          } 
         } 
        } 
        else 
        { 
         Uri calendars= Uri.parse("content://com.android.calendar/calendars"); 
         Cursor managedCursor = managedQuery(calendars, projection, null, null, null); 
         if (managedCursor.moveToFirst()) 
         { 
          String calName; 
          String calId; 
          int nameColumn = managedCursor.getColumnIndex("name"); 
          int idColumn = managedCursor.getColumnIndex("_id"); 
          do 
          { 
           calName = managedCursor.getString(nameColumn); 
           calId = managedCursor.getString(idColumn); 
           Log.e("Calendar Id : ",""+calId+" : "+calName); 
          } 
          while (managedCursor.moveToNext()); 

          if(calId != null) 
          { 
           try 
           { 
            Log.e("Calendar Id : ",""+calId+" : "+calName); 
            ContentValues event = new ContentValues(); 
            event.put("calendar_id", calId); 
            event.put("title", summary); 
            event.put("description", summary); 
            event.put("eventLocation", ""); 

            event.put("dtstart", startTime); 
            event.put("dtend", endTime); 
            event.put("allDay", allDayFlag); 
            event.put("eventStatus", 1); 
            event.put("visibility", 0); 
            event.put("hasAlarm", 1); 
            Uri eventsUri = Uri.parse("content://com.android.calendar/events"); 
            Uri url = getContentResolver().insert(eventsUri, event); 
            Log.e("Event Res : ",""+url); 
            if(!url.equals("")) 
            Main.showErrorDialog(this, "Event Successfully Added "); 
           } 
           catch (Exception kwse) 
           { 
            Log.e("Exception 2 kwse ",""+kwse.toString()); 
           } 
          } 
         } 
        } 

上記のコードは、Android 3.0までは良い実行されているが、イベントは、Android 4.0で追加取得されていない、これは私が私のクライアントからもらった苦情です。私はアンドロイド4.0のデバイスを持っていないので、私はそれを確認することができません。それは我々が

sdk version above 7用として、我々は

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

として使用

Uri calendars = Uri.parse("content://calendar/calendars"); 

として使用sdk version 7 and belowのAndroidデバイスのために

これは4.0アンドロイドのための同じであるが、あまりにも変更することには何ですか?

答えて

0
3

私は「visibilitを考えますyは」アンドロイド4.0に

そして

int nameColumn = managedCursor.getColumnIndex("calendar_displayName");

存在しない

int nameColumn = managedCursor.getColumnIndex("name");

1

よりも良いかもしれません、私は同じ問題を持って、そのソリューションtoo.MyイベントはありませんでしたICSとJellyBeanデバイスを追加しますが、他のすべてのデバイスで動作します。
これを試してみてください -

ContentValues event = new ContentValues(); 
int apiLevel = android.os.Build.VERSION.SDK_INT; 
      if(apiLevel<14) 
      event.put("visibility", 0); 

使用し、視認性デバイスのバージョンが14未満(ICS)

である場合にのみ
関連する問題