向系统日历添加一条事件(时间指定)

本文介绍如何在Android系统日历中添加事件,详细阐述了在Activity中调用相关功能的方法,帮助开发者实现时间指定的日历管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package testCalendar;

import java.util.Calendar;
import java.util.TimeZone;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.provider.CalendarContract.Reminders;

import com.example.testshellcmd.SharedApplication;

public class CalendarHelper {
	/**
	 * 后台插入一条日历事件
	* @param title 时间标题
	* @param descrip 描述
	* @param startTime 事件开始时间,例2015年11月22号10点
	* 			Calendar mCalendar = Calendar.getInstance();
	*			mCalendar.set(2015, 10, 22, 10, 0);
	* @param startTime 事件结束时间
	 */
	public static void insertCalendar(String title, String descrip,String location,
			Calendar startTime, Calendar endTime, Context context) {
		String calanderURL;
		String calanderEventURL;
		String calanderRemiderURL;
		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";
		}
		// 获取要出入的gmail账户的id
		String calId = "";
		Cursor userCursor = SharedApplication.context.getContentResolver()
				.query(Uri.parse(calanderURL), null, null, null, null);
		if (userCursor.getCount() > 0) {
			userCursor.moveToFirst();
			calId = userCursor.getString(userCursor.getColumnIndex("_id"));
			android.util.Log.e("cxq", calId);

		}
		ContentValues event = new ContentValues();
		event.put("title", title);
		event.put("description", descrip);
		event.put("calendar_id", calId);
		event.put("eventLocation", location);   

		// 全天事件
		// event.put("allDay", true);

		long start = startTime.getTime().getTime();
		long end = endTime.getTime().getTime();
		event.put("dtstart", start);
		event.put("dtend", end);

		event.put("hasAlarm", 1);
		// 设置时区
		event.put("eventTimezone", TimeZone.getDefault().getID().toString());

		Uri newEvent = SharedApplication.context.getContentResolver().insert(
				Uri.parse(calanderEventURL), event);
		long id = Long.parseLong(newEvent.getLastPathSegment());
		ContentValues values = new ContentValues();
		values.put("event_id", id);
		// 提前一天提醒
		values.put(Reminders.MINUTES, 1 * 60 * 24);
		values.put(Reminders.EVENT_ID, id);
		values.put(Reminders.METHOD, Reminders.METHOD_ALERT);
		ContentResolver cr1 = context.getContentResolver(); // 为刚才新添加的event添加reminder
		cr1.insert(Reminders.CONTENT_URI, values);
	}

	/**
	 * 带图形界面
	* @author meitu
	* @time 2015-10-21下午2:28:10
	 */
	public static void insertWithActivity(Context context) {
		Calendar cal = Calendar.getInstance();
		Intent intent = new Intent(Intent.ACTION_EDIT);
		intent.setType("vnd.android.cursor.item/event");
		intent.putExtra("beginTime", cal.getTimeInMillis());
		intent.putExtra("allDay", true);
		intent.putExtra("rrule", "FREQ=YEARLY");
		intent.putExtra("endTime", cal.getTimeInMillis() + 60 * 60 * 2000);
		intent.putExtra("title", "Test Event");
		intent.putExtra("description", "This is a sample description");
		context.startActivity(intent);
	}
}


调用部分(Activity中)

		Calendar start = Calendar.getInstance();
		start.set(2015, 9, 30, 9, 25);
		Calendar end = Calendar.getInstance();
		end.set(2015, 9, 30, 10, 25);
		CanlenderHelper.insertCalendar("部门活动", "庆祝新产品成功发布!","维多利亚大酒店", start, end, this);


CalendarHelper.insertWithActivity(this);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值