Android向系统日历添加事件提醒

这篇博客介绍了如何在Android应用中实现系统日历提醒功能。首先,需要请求读写日历的权限,然后创建常量类定义相关URI。接着,创建一个日历工具类,包括检查和添加日历账户、添加日历事件、删除和更新事件等方法。博客还提到了日历事件的重复规则设置,并提供了判断星期的方法。

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

项目场景:

在项目开发过程中,需要使用系统日历来辅助提醒。通过向系统日历中写入事件、设置提醒方式,实现到达某个特定的时间自动提醒的功能


解决方案:

1. 请求权限

//Android6.0以上需要动态申请权限
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />

2. 创建一个常量类添加日历相关的uri

const val CONSTANT_CALENDAR_URL = "content://com.android.calendar/calendars" //  日历账户
const val CONSTANT_CALENDAR_EVENT_URL = "content://com.android.calendar/events" //  日历事件
const val CONSTANT_CALENDAR_REMINDER_URL = "content://com.android.calendar/reminders" //  日历提醒

3.创建一个日历的工具类

import android.content.ContentUris
import android.content.Context
import android.database.Cursor
import android.graphics.Color
import android.net.Uri
import android.provider.CalendarContract
import android.util.Log
import androidx.core.content.contentValuesOf
import com.list.plan.constant.*
import com.list.plan.entity.PunchEntity
import java.util.*

/**
 * 日历提醒工具类
 */
class CalendarReminderUtils {
   


    /**
     * 检查是否已经添加了日历账户,如果没有先添加一个日历账户再查询
     * 获取账户成功返回账户id,否则返回-1
     */
    private fun checkAndAddCalendarAccount(context: Context): Int {
   
        var account = -1
        account = getSystemCalendarAccount(context)
        return if (account < 0) {
   
            addCalendarAccount(context)
        } else account
    }

    /**
     * 检查是否存在现有账户,存在则返回账户id,否则返回-1
     * 这里获取现有账户中第一个账号,如果不需要,可以将CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL + " ASC "变成null
     */
    private fun getSystemCalendarAccount(context: Context): Int {
   
        var account = -1
        var userCursor: Cursor? = null
        try {
   
            if (android
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值