在Android 4.0中添加日历和事件

在Android 4.0中添加日历和事件,android,calendar,uri,Android,Calendar,Uri,我想在android 4.0及以上版本的设备中添加日历事件。 目前,我正在使用以下代码添加事件 if (android.os.Build.VERSION.SDK_INT <= 7 ) { Uri calendars = Uri.parse("content://calendar/calendars"); Cursor managedCursor = man

我想在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());
                                }
                            }
                        }
                    }
其中对于7以上的
sdk版本
我们使用

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

android 4.0也一样吗?有什么需要更改的吗?

在ICS中,您必须使用公共日历API。请查看以下链接:


  • 在ICS中,您必须使用公共日历API。请查看以下链接:

  • 我认为Android 4.0中不存在“可见性”

    int-nameColumn=managedCursor.getColumnIndex(“日历显示名称”)

    可能比

    int-nameColumn=managedCursor.getColumnIndex(“名称”)

    我认为Android 4.0中不存在“可见性”

    int-nameColumn=managedCursor.getColumnIndex(“日历显示名称”)

    可能比


    int-nameColumn=managedCursor.getColumnIndex(“名称”)

    我也遇到了同样的问题及其解决方案。我的活动不是添加IC和JellyBean设备,而是为所有其他设备工作。
    试试这个-

    ContentValues event = new ContentValues();
    int apiLevel = android.os.Build.VERSION.SDK_INT;
                if(apiLevel<14)
                event.put("visibility", 0);
    
    ContentValues事件=新ContentValues();
    int apiLevel=android.os.Build.VERSION.SDK\u int;
    
    如果(apiLevel我也遇到了同样的问题及其解决方案。我的活动不是添加IC和JellyBean设备,而是为所有其他设备工作。
    试试这个-

    ContentValues event = new ContentValues();
    int apiLevel = android.os.Build.VERSION.SDK_INT;
                if(apiLevel<14)
                event.put("visibility", 0);
    
    ContentValues事件=新ContentValues();
    int apiLevel=android.os.Build.VERSION.SDK\u int;
    如果(高级)