android - Android 4.0 添加日历和事件

标签 android calendar uri

我想在 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中没有添加事件,这是我从客户那里得到的提示。我没有android 4.0的设备,所以无法检查。

对于 sdk 版本 7 及以下的 Android 设备,我们将其用作

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

对于 sdk 版本高于 7 我们使用 as

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

这对于 Android 4.0 来说也是一样吗?还有什么需要改变的吗?

最佳答案

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

还有

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

可能比

更好

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

关于android - Android 4.0 添加日历和事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10100563/

相关文章:

android - 彩色盒装字母 a la Gmail

javascript - React-Native 日历 : Pass date into custom function when a day is pressed

android - 将选定的音频文件设置为铃声

android - 如何从位图中获取 Uri 对象

Android Espresso 测试 'Cannot resolve symbol ' InstrumentationRegistry''

java - 什么是契约(Contract)类以及如何使用它

java - 在 PagerAdapter 中开始新 Activity

ios - Google 在 iOS 上同步日历

android - 从 Android 应用程序向 Google 日历添加事件

c# - 如何在 App.Config 中写入 URI 字符串