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)。奥巴马曾访问过这里,并在自己的回忆录《来自我父亲的梦想》里提及此事。在他入主白宫前,当地的小学还被命名为“参议员巴拉克·奥巴马小学”。奥巴马小学目前破旧不堪,孩子们还在用破桌烂凳上课。在接受媒体采访时,该小学的一位教师说:“我们认为,美国政府至少要带一些援助过来。”");

		// 插入[email protected]这个账户

		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();

  

  

  

  

  

你可能感兴趣的:(android)