Android Calander Event

必须权限

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

Calendar Event Url

	private static String calanderURL = "";
	private static String calanderEventURL = "";
	private static String calanderRemiderURL = "";

	// 为了兼容不同版本的日历,2.2以后url发生改变
	static {
		if (Integer.parseInt(Build.VERSION.SDK) >= 8) {
			calanderURL = "content://com.android.calendar/calendars";
			calanderEventURL = "content://com.android.calendar/events";
			calanderRemiderURL = "content://com.android.calendar/reminders";

		} else {
			calanderURL = "content://calendar/calendars";
			calanderEventURL = "content://calendar/events";
			calanderRemiderURL = "content://calendar/reminders";
		}
	}

获取用户

		// Get User Name
		Cursor userCursor = getContentResolver().query(Uri.parse(calanderURL), null, null, null, null);
		if (userCursor.getCount() > 0) {
			while (userCursor.moveToNext()) {
				userCursor.getColumnNames();// [allowedAvailability, cal_sync9,
											// cal_sync8, ownerAccount,
											// cal_sync7, visible, cal_sync6,
											// canOrganizerRespond, cal_sync5,
											// cal_sync4, cal_sync3, cal_sync2,
											// canModifyTimeZone, cal_sync1,
											// calendar_color_index, _id,
											// calendar_timezone, _sync_id,
											// allowedReminders, cal_sync10,
											// name, sync_events,
											// calendar_access_level, dirty,
											// allowedAttendeeTypes,
											// canPartiallyUpdate, account_type,
											// COALESCE(isPrimary, ownerAccount
											// = account_name), maxReminders,
											// deleted, calendar_color,
											// account_name, calendar_location,
											// calendar_displayName, mutators]
				String userName = userCursor.getString(userCursor.getColumnIndex("name"));
				String calId = userCursor.getString(userCursor.getColumnIndex("_id"));
				Toast.makeText(CalendarActivity.this,calId+"    " +userName, Toast.LENGTH_LONG).show();
			}
		}

读取Calendar Event

//Get Calander Event
		Cursor eventCursor = getContentResolver().query(Uri.parse(calanderEventURL), null, null, null, null);
		if (eventCursor.getCount() > 0) {
			while (eventCursor.moveToNext()) {
				for (int i = 0; i < eventCursor.getColumnCount(); i++) {
					eventCursor.getColumnNames();// [eventEndTimezone,
													// isOrganizer, cal_sync9,
													// cal_sync8, cal_sync7,
													// visible, cal_sync6,
													// cal_sync5, rrule,
													// cal_sync4, cal_sync3,
													// cal_sync2, cal_sync1,
													// calendar_color_index,
													// hasAlarm, rdate, dtstart,
													// sync_data1, sync_data2,
													// hasAttendeeData,
													// sync_data3,
													// calendar_timezone,
													// sync_data4, description,
													// sync_data5, sync_data6,
													// calendar_access_level,
													// lunarRrule, sync_data7,
													// sync_data8, sync_data9,
													// customAppPackage,
													// modifyTime, account_type,
													// hasExtendedProperties,
													// eventLocation, dtend,
													// allDay, sync_data10,
													// organizer, lastSynced,
													// deleted, account_name,
													// originalInstanceTime,
													// mutators,
													// selfAttendeeStatus,
													// eventColor_index,
													// eventTimezone,
													// createTime,
													// allowedAvailability,
													// ownerAccount,
													// canOrganizerRespond,
													// canModifyTimeZone,
													// lastDate,
													// guestsCanModify,
													// guestsCanSeeGuests,
													// exrule, title, _id,
													// displayColor, _sync_id,
													// allowedReminders,
													// uid2445, cal_sync10,
													// dirty,
													// allowedAttendeeTypes,
													// availability,
													// calendar_id, original_id,
													// customAppUri,
													// originalAllDay,
													// maxReminders, isLunar,
													// accessLevel,
													// calendar_color, duration,
													// calendar_displayName,
													// guestsCanInviteOthers,
													// original_sync_id,
													// eventColor, exdate,
													// eventStatus]
					String eventTitle = eventCursor.getString(eventCursor.getColumnIndex("title"));
//					Toast.makeText(CalendarActivity.this, eventTitle, Toast.LENGTH_LONG).show();
				}
			}
		}

插入 Calendar Event

		//insert Calander Event

		// 获取要出入的gmail账户的id
		String calId = "";
		userCursor = getContentResolver().query(Uri.parse(calanderURL), null, null, null, null);
		if (userCursor.getCount() > 0) {
			userCursor.moveToFirst();
			calId = userCursor.getString(userCursor.getColumnIndex("_id"));

		}
		ContentValues event = new ContentValues();
		event.put("title", "奥巴马任总统后首次回祖籍国 肯尼亚人:别空手来");
		event.put("description", "奥巴马是美国第一位非洲裔总统,他的父亲老巴拉克·奥巴马是肯尼亚的经济学家。在奥巴马21岁的时候,老奥巴马不幸遭遇车祸去世,死后葬在故乡科盖洛(Kogelo)。奥巴马曾访问过这里,并在自己的回忆录《来自我父亲的梦想》里提及此事。在他入主白宫前,当地的小学还被命名为“参议员巴拉克·奥巴马小学”。奥巴马小学目前破旧不堪,孩子们还在用破桌烂凳上课。在接受媒体采访时,该小学的一位教师说:“我们认为,美国政府至少要带一些援助过来。”");
		// 插入hoohbood@gmail.com这个账户
		event.put("calendar_id", calId);

		Calendar mCalendar = Calendar.getInstance();
		mCalendar.add(Calendar.DATE, 1);	 
		long start = mCalendar.getTime().getTime();
		mCalendar.add(Calendar.HOUR_OF_DAY, 2);
		long end = mCalendar.getTime().getTime();

		event.put("dtstart", start);
		event.put("dtend", end);
		event.put("hasAlarm", 1);
		event.put("eventTimezone", TimeZone.getDefault().getID());

		Uri newEvent = getContentResolver().insert(Uri.parse(calanderEventURL), event);
		long id = Long.parseLong(newEvent.getLastPathSegment());
		ContentValues values = new ContentValues();
		values.put("event_id", id);
		// 提前10分钟有提醒
		values.put("minutes", 10);
		getContentResolver().insert(Uri.parse(calanderRemiderURL), values);
		Toast.makeText(CalendarActivity.this, "插入事件成功!!!", Toast.LENGTH_LONG).show();

  

  

  

  

  

原文地址:https://www.cnblogs.com/xiaobuild/p/4664379.html