更新记录

1.0.6(2023-07-06)

1、获取日程列表函数增加 eventId 字段返回,该字段值用于删除日程使用 2、删除日程函数修改为使用日程的eventId删除

1.0.5(2023-06-17)

1、增加批量删除日程函数。 2、增加日期条件筛选查询日程函数

1.0.4(2023-04-21)

日程增、删、查逻辑优化,解决偶现的删除日程失败的bug

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


增删查日历日程事件安卓原生插件

  • 支持Android平台使用

    插件支持增加、删除、查询添加到系统日历的日程事件
  • 函数说明

    序号 函数名称 函数说明
    1 addCalendarEvent(String json, callback) 新增日程事件到系统日历
    2 deleteCalendarEvent(int eventId, callback) 删除系统日历日程事件(根据eventId删除)
    3 batchDeleteCalendarEvent(Array ids, callback) 批量删除系统日历日程事件(根据eventId删除)
    4 getCalendarEvents(callback) 查询系统日历的所有日程事件
    5 getCalendarEventsByDate(String json,callback) 根据日期筛选获取日历日程事件
  • addCalendarEvent(String json, callback)函数参数说明

    参数1: json 新增日程的参数,参数示例如下:
    {
          title:"日程标题",
          description:"日程描述",
          startTime:"2023-01-05 10:39:00",//开始时间
          endTime:"2023-01-05 12:39:00",//结束时间
          previousMinutes:"5" //前5分钟有提醒
      }
    
    参数2:callback 结果回调函数
  • deleteCalendarEvent(int eventId, callback)函数参数说明

    参数1: eventId 要删除的日程 eventId
    参数2:callback 结果回调函数
  • batchDeleteCalendarEvent(Array ids, callback)函数参数说明

    批量删除日程函数,
    参数1: ids 要删除的日程 eventId 数组,例:[23,24,...,n]
    参数2:callback 结果回调函数
  • getCalendarEvents(callback)函数参数说明

    回调函数结果示例如下:
    {
        "code":2,
        "message":"获取日程成功",
        "data":[
            {
                "eventId":300,
                "title":"日程标题",
                "description":"日程描述",
                "startTime":"2023-01-05 10:39:00",
                "endTime":"2023-01-05 12:39:00"
            }
        ]
    }
  • getCalendarEventsByDate(String json,callback)函数参数说明

    根据日期筛选获取日历日程事件,即查询筛选范围内开始的日程
    json参数格式如下:
    {
        startTime: '2023-06-01 00:00:00',//筛选开始日期
        endTime: '2023-06-20 23:59:59' //筛选的结束日期
    }
    说明:当前示例为查询2023-06-01 00:00:00 到 2023-06-20 23:59:59 这段时间内会开始的日程,
          也就是这个时间范围内对应的是日程的 startTime字段的值。
    
    回调函数结果与getCalendarEvents(callback)函数回调结果一致
  • code值说明

    序号 code值 说明
    1 3 批量删除日程事件成功
    2 2 获取日程事件成功
    3 1 删除日程事件成功
    4 0 添加日程事件成功
    5 -1 获取账户id失败(包括没有账户时添加账户失败),添加日历事件失败
    6 -2 添加日历事件失败
    7 -3 添加事件提醒失败,日程添加成功
    8 -4 删除日程,根据标题查询日程失败
    9 -5 删除日程失败
    10 -6 获取日程失败,查询失败,未查询到任何数据
    11 -7 没有日历读写权限
  • 使用示例

    <template>
        <view class="uni-column">
            <input type="text" placeholder="请输入日程标题" v-model="title">
            <button @click="addEvent1()">新增日程(用于测试根据时间查询)</button>
            <button @click="addEvent()">新增日程</button>
            <button @click="queryEvent()">查询日程</button>
            <button @click="queryEventByDate()">时间范围查询日程</button>
            <button @click="deleteEvent()">批量删除日程</button>
    
            <view class="uni-column" style="margin-top: 20rpx;">
                <view class="uni-row" style="padding: 20rpx 10rpx;justify-content: space-between;"
                    v-for="(item,index) in datas" :key="index">
                    <text>{{item.title}}</text>
                    <text style="padding: 10rpx;" @click="clickDelete(item)">删除</text>
                </view>
            </view>
        </view>
    </template>
    
    <script>
        const module = uni.requireNativePlugin("jushi-CalendarEvent")
        export default {
            data() {
                return {
                    title:'日程标题',
                    datas: []
                }
            },
            methods: {
                addEvent1() {//新增日程(用于测试根据时间查询)
                    module.addCalendarEvent({
                        title: '不在筛选日期内的日程',
                        description: `日程描述:不在筛选日期内的日程`,
                        startTime: '2023-04-02 20:00:20', //开始时间
                        endTime: '2023-04-02 21:00:20', //结束时间
                        previousMinutes: "5" //前5分钟有提醒
                    }, res => {
                        console.log(res)
                    })
                },
                addEvent() {
                    module.addCalendarEvent({
                        title: this.title,
                        description: `日程描述:${this.title}`,
                        startTime: this.getNowTime(), //开始时间
                        endTime: this.getEndTime(), //结束时间
                        previousMinutes: "5" //前5分钟有提醒
                    }, res => {
                        console.log(res)
                    })
                },
                queryEvent() {//查询系统所有日程
                    module.getCalendarEvents(res => {
                        console.log(res)
                        this.datas = JSON.parse(res).data
                    })
                },
                queryEventByDate() {//根据时间范围查询系统日程
                    module.getCalendarEventsByDate({
                        startTime: '2023-06-01 00:00:00',//筛选的开始时间
                        endTime: '2023-06-20 23:59:59' //筛选的结束时间
                    }, res => {
                        console.log(res)
                        this.datas = JSON.parse(res).data
                    })
                },
                deleteEvent() {//批量删除日程
                    if (this.datas.length == 0) {
                        console.log('没有可删除的日程,请先查询日程数据')
                        return
                    }
                    var ids = [] //要删除的日程数组,数组中存放日程标题
                    this.datas.forEach((e,index)=>{
                        ids.push(e.eventId)
                    })
                    console.log(JSON.stringify(ids))
                    module.batchDeleteCalendarEvent(ids, res => {
                        console.log(res)
                    })
    
                },
                clickDelete(item) {//单个日程删除
                    module.deleteCalendarEvent(item.eventId, res => {
                        console.log(res)
                    })
                },
                /**
                 * 获取当前时间
                 */
                getNowTime() {
                    var date = new Date(),
                        year = date.getFullYear(),
                        month = date.getMonth() + 1,
                        day = date.getDate(),
                        hour = date.getHours() < 10 ? "0" + date.getHours() : date.getHours(),
                        minute = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(),
                        second = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
                    month >= 1 && month <= 9 ? (month = "0" + month) : "";
                    day >= 0 && day <= 9 ? (day = "0" + day) : "";
                    return (year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second);
                },
                /**
                 * 日程结束时间
                 */
                getEndTime() {
                    var date = new Date(),
                        year = date.getFullYear(),
                        month = (date.getMonth() + 1) + 1,
                        day = date.getDate(),
                        hour = date.getHours() < 10 ? "0" + date.getHours() : date.getHours(),
                        minute = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(),
                        second = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
                    month >= 1 && month <= 9 ? (month = "0" + month) : "";
                    day >= 0 && day <= 9 ? (day = "0" + day) : "";
                    return (year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second);
                }
            }
        }
    </script>
    
    <style>
        .uni-column {
            padding-top: 300rpx;
            display: flex;
            flex-direction: column;
        }
    
        .uni-row {
            display: flex;
            flex-direction: row;
        }
    
        input{
            padding: 10rpx;
            margin: 20rpx;
        }
    </style>
  • 示例应用下载

    扫码下载体验

    其它插件

    安卓原生插件

  • 文件在线预览

  • 银联支付线上收银台(通用版) 封装

  • 阿里云RTC音视频通话

  • 权限请求

  • 文字转语音

  • MQTT连接

  • 获取手机通讯录联系人

  • 快捷工具悬浮窗

  • 日历日程事件

  • 获取本地音频文件信息

  • 根据经纬度获取位置信息

  • WebSocket连接

  • 高德地图封装安卓原生地图扩展组件

  • 使用ECharts封装的安卓原生扩展组件

  • 给图片添加水印

  • 自定义通知栏通知

    UTS插件

  • 安卓权限请求UTS插件

  • 安卓文字转语音UTS插件

  • 安卓获取音频文件UTS插件

    前端插件

  • ECharts封装全端通用组件

  • 图片添加水印,支持微信小程序、H5

  • 手写签名、电子签名组件

隐私、权限声明

1. 本插件需要申请的系统权限列表:

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

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

本插件不采集任何数据,只作为新增、删除、查询日历日程使用,需要获取日历读写权限,未获得用户授权则无法使用。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问