【Android】EventReminder使用教程(日历事件导出封装库)
碎碎念
为啥要写这个库呢?
- 尝试自己写一个库调用,学习一下这个流程,为以后做准备
- 日历库在网上的资料太少了,而这个功能却又很实用
- 自己做的项目都会涉及到事件导出功能,不想重复写代码
这个库目前可以支持日历事件的直接导出、删除,ics文件的生成
ics生成文件中支持重复规则
目前该库还在完善中
欢迎提供建议
AndroidX构建
使用方法
引入
在项目中引用即可
implementation 'com.paul.eventreminder:eventreminder:0.0.6'
使用教程
CalendarManager
不是特别方便的初始化方法:
你需要提供Activity(用来获取权限)以及日历账户配置名称
首先声明一个Manager:
CalendarManager calendarManager=new CalendarManager(this,"测试");
会自动请求日历写入权限,如果拒绝这一块逻辑我没有处理,你可以在自己的代码中去实现该逻辑。
添加一个事件的时候你需要创建一个CalendarEvent 对象,或者您也可以选择继承自这个类
属性如下:
//总结
String summary;
//内容
String content;
//地点
String loc;
//周次
List<Integer> weekList;
//周几
int dayOfWeek;
//开始时间
String startTime;
//结束时间
String endTime;
这里的weeklist至关重要,因为通过该集合来控制事件的重复
考虑到部分存在[1,2,3,4,8,10]这种不规则的形式,因此采用逐一导入的方法。
开始时间和结束时间的格式为 :“8:00”
创建好你的事件后调用addCalendarEvent方法即可,这里需要传入一个当前周次来告诉我当前所处时间位置。这个周次一定是在你提供的weekList中的。
public void addCalendarEvent(CalendarEvent mySubject, int curWeek,OnExportProgressListener listener)
当然你也可以选择不传curWeek这个参数,会自动默认添加从1月1号到当前时间过了几周
在添加事件事前,你也可以为其设置提醒
calendarManager.setAlarm(true);//开启提醒
calendarManager.setAlarmTime(15);//15分钟
删除事件也很简单,直接调用delete方法即可。
public void deleteCalendarEvent(OnExportProgressListener listener)
值得一提的是,删除判断的是事件内容末尾的@+ACCOUNT_NAME,所以请保持该名称在创建和删除时候要相同。
ICSManager
初始化:
ICSManager icsManager=new ICSManager(Context context,String userName);
生成的ics默认保存在私有目录下,如果要开启保存在Download路径下,请使用:
icsManager.setFlag_alarm(true);//默认为开启状态
同Calendar一样,你需要创建对应的CalendarEvent并传入
icsManager.OutPutIcsFile(String filename,boolean useRule,List<CalendarEvent> calendarEvents,int curWeek,OutPutListener listener)
这里有一个参数为useRule,为bool类型
true代表开启重复规则,false代表关闭
开启重复规则后,根据你提供的weeklist来进行判断
形如 [1,2,3,4,5,6]或者[2,4,6,8,10]或者[1,3,5,7,9]都可以支持规则导出
但如果是这种[1,2,3,4,6,8]不规则的,会自动按照重复逐一导出
开启提醒的方式:
icsManager.setAlarm_seconds(15);
icsManager.setFalg_alarm(true);
在回调函数中,onSuccess方法会传回来一个生成文件路径,由于该文件是保存在包名下的私有目录,因此不需要任何读写权限。
你也可以直接调用File来处理他。
项目github地址:https://github.com/paul623/EventReminder
具体实例请看项目内的代码。
【Android】EventReminder使用教程(日历事件导出封装库)的更多相关文章
- Altium Designer如何从已有的PCB图中导出封装库
1.打开PCB文件 2.选择 Design -> Make Integrated Library (生成集成库) 注意,一定要在PCB 文件下 生成集成库!! 最终生成这个文件,打开这个文 ...
- 调用Android自带日历功能(日历列表单、添加一个日历事件)
调用Android自带日历功能 觉得这篇文章不错,转载过来. 转载:http://blog.csdn.net/djy1992/article/details/9948393 Android手机配备有 ...
- Android ROM 制作教程
本文来自: 起点手机论坛 具体文章參考:http://www.qdppc.com/forum.php?mod=viewthread&tid=43751&fromuid=1 1.Andr ...
- Android基础新手教程——3.7 AnsyncTask异步任务
Android基础新手教程--3.7 AnsyncTask异步任务 标签(空格分隔): Android基础新手教程 本节引言: 本节给大家带来的是Android给我们提供的一个轻量级的用于处理异步任务 ...
- Android基础新手教程——3.4 TouchListener PK OnTouchEvent + 多点触碰
Android基础新手教程--3.4 TouchListener PK OnTouchEvent + 多点触碰 标签(空格分隔): Android基础新手教程 本节引言: 如题,本节给大家带来的是To ...
- Android基础新手教程——3.8 Gestures(手势)
Android基础新手教程--3.8 Gesture(手势) 标签(空格分隔): Android基础新手教程 本节引言: 周六不歇息,刚剪完了个大平头回来.继续码字~ 好的,本节给大家带来点的是第三章 ...
- Android Studio使用教程(二)
以下是本次Google I/O大会发布的IDE Android Studio使用教程第二篇: 在Android Studio使用教程(一)中简要介绍了Android Studio的基本使用,包括安装. ...
- Android Studio系列教程五--Gradle命令详解与导入第三方包
Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...
- Android自定义视图教程
Android自定义视图教程 Android的UI元素都是基于View(屏幕中单个元素)和ViewGroup(元素的集合),Android有许多自带的组件和布局,比如Button.TextView.R ...
随机推荐
- 1. python跨目录调用模块
快速镜像安装第三方库 : pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy (三方库名字) 同目录下,我们可以直接调用模块, ...
- F-NAScan:一款网络资产扫描工具
此脚本的大概流程为: ICMP存活探测-->端口开放探测-->端口指纹服务识别-->提取快照(若为WEB)-->生成结果报表 用法 python NAScan.py -h 10 ...
- Effective python(五):内置模块
1,考虑使用contextlib和with语句改写可复用的try/finally代码 with lock:print('lock is held')相当于try:print('lock is held ...
- 【分布式锁】07-Zookeeper实现分布式锁:Semaphore、读写锁实现原理
前言 前面已经讲解了Zookeeper可重入锁的实现原理,自己对分布式锁也有了更深的认知. 我在公众号中发了一个疑问,相比于Redis来说,Zookeeper的实现方式要更好一些,即便Redis作者实 ...
- go:数据类型
Go语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串外,还有数组.切片.结构体.函数.map.通道(channel)等.Go 语言的基本类型和其他语言大同小异. 1.基本数据类型 整型 ...
- Building Applications with Force.com and VisualForce(Dev401)( 八):Designing Applications for Multiple Users: Controling Access to Records.
Module Objectives1.List feature that affect access to data at the record level.2.List the organizati ...
- 如何定时备份Mysql数据库
1.创建备份数据库存储目录 cd data/db mkdir backup #创建存储目录 2.添加备份脚本 vim backupdb.sh #创建脚本文件 脚本内容如下: #!/bin/sh db_ ...
- TensorFlow RNN 教程和代码
分析: 看 TensorFlow 也有一段时间了,准备按照 GitHub 上的教程,敲出来,顺便整理一下思路. RNN部分 定义参数,包括数据相关,训练相关. 定义模型,损失函数,优化函数. 训练,准 ...
- coding++:win10家庭版升级专业版方案
win10家庭版升级专业版密钥: VK7JG-NPHTM-C97JM-9MPGT-3V66T 4N7JM-CV98F-WY9XX-9D8CF-369TT FMPND-XFTD4-67FJC-HDR8C ...
- 理解MapReduce计算构架
用Python编写WordCount程序任务 程序 WordCount 输入 一个包含大量单词的文本文件 输出 文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词 ...