[英]Adding Calendar and events in Android 4.0
I want to add calendar events in android 4.0 and above version device.我想在android 4.0及以上版本设备中添加日历事件。 Currently i am adding the events using the following code,
目前我正在使用以下代码添加事件,
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());
}
}
}
}
The above code is running good till android 3.0, but the events are not getting added in android 4.0, this is a complaint i got from my client.上面的代码在 android 3.0 之前运行良好,但是在 android 4.0 中没有添加事件,这是我从客户那里收到的投诉。 I dont have a device of android 4.0, so i am unable to check it.
我没有android 4.0的设备,所以我无法检查它。
For android devices of sdk version 7 and below
it we use as对于 sdk
sdk version 7 and below
的 android 设备,我们将其用作
Uri calendars = Uri.parse("content://calendar/calendars");
where as for sdk version above 7
we use as至于
sdk version above 7
我们用作
Uri calendars= Uri.parse("content://com.android.calendar/calendars");
Is this is the same for android 4.0 too are anything to be changed?这对于 android 4.0 是否也一样,有什么要更改的吗?
I think "visibility" doesn't exist in Android 4.0我认为 Android 4.0 中不存在“可见性”
And和
int nameColumn = managedCursor.getColumnIndex("calendar_displayName");
could be better than可能比
int nameColumn = managedCursor.getColumnIndex("name");
I got the same problem and its solution too.My events was not adding in ICS and JellyBean devices but working for all other.我也遇到了同样的问题及其解决方案。我的事件不是添加 ICS 和 JellyBean 设备,而是为所有其他设备工作。
Try this -试试这个 -
ContentValues event = new ContentValues();
int apiLevel = android.os.Build.VERSION.SDK_INT;
if(apiLevel<14)
event.put("visibility", 0);
Use visibility only if device version is less than 14(ICS)仅当设备版本低于 14(ICS) 时才使用可见性
In ICS you have to use the public Calendar API. Please check the links below:在 ICS 中,您必须使用公共日历 API。请查看以下链接:
How to read and edit Android calendar events using the new Android 4.0 Ice Cream Sandwich API? 如何使用新的 Android 4.0 冰淇淋三明治 API 读取和编辑 Android 日历事件?
http://www.techrepublic.com/blog/app-builder/programming-with-the-android-40-calendar-api-the-good-the-bad-and-the-ugly/825 http://www.techrepublic.com/blog/app-builder/programming-with-the-android-40-calendar-api-the-good-the-bad-and-the-ugly/825
http://android10.org/index.php/articlestrickssecrets/353-android-ics-adding-events-to-the-calendar http://android10.org/index.php/articlestrickssecrets/353-android-ics-adding-events-to-the-calendar
http://www.vogella.com/articles/AndroidCalendar/article.htmlhttp://www.vogella.com/articles/AndroidCalendar/article.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.