【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 ...
随机推荐
- golang socket编程 net.Conn IO.EOF解读
结论 首先,先定义下我的理解,当在Read时,收到一个IO.EOF,代表的就是对端已经关闭了发送的通道,通常来说是发起了FIN. 那么根据自己的实际业务,就可以进行判断,这里的IO.EOF到底该怎么利 ...
- eclipse、 IDEA中字母大小写转换快捷键
eclipse 中字母大小写切换快捷键: ctrl + shift + x 转为大写 ctrl + shift + y 转为小写 IDEA 中字母大小写切换快捷键: ctr + sh ...
- 简单BBS项目开始(二)
登陆和生成图片验证码 1.生成图片 pillow 1.生成图片的模块pillow,在python中安装pillow,在Django中使用时用PIL2. 在页面上<img id="val ...
- django自动生成接口文档
我们在实际项目中,会需要将我们的一些接口的信息返回给前端,便于前后端的交互,在实际使用中,这种自动生成接口文档的模块很多,我主要是用REST framework自动生成接口文档,这个需要用到的是cor ...
- 大多数人不知道的表格其他写法的onmouseover效果
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- [尊老爱幼] Queen
You are given a rooted tree with vertices numerated from 1 to n . A tree is a connected graph withou ...
- Apache服务器故障排除攻略
Apache服务器故障排除攻略 应用服务器Apache浏览器配置管理网络应用 随着网络技术的普及.应用和Web技术的不断完善,Web服务已经成为互联网上重要的服务形式之一.原有的客户端/服务器模式正 ...
- 二、sudo su root 和sudo su -的区别
1.使用sudo su root可以快速切换为root用户,输入密码后输pwd可以看到它还是在主目录下即/home/sdbi 显示为:用户名@主机名:/home/sdbi#即root@linux:/h ...
- Functor、Applicative 和 Monad
Functor.Applicative 和 Monad 是函数式编程语言中三个非常重要的概念,尤其是 Monad. 说明:本文中的主要代码为 Haskell 语言,它是一门纯函数式的编程语言. 一.结 ...
- Linux的五种IO模型及同步和异步的区别
前置知识 缓存 I/O 缓存 I/O 又被称作标准 I/O,大多数文件系统的默认 I/O 操作都是缓存 I/O.在 Linux 的缓存 I/O 机制中,操作系统会将 I/O 的数据缓存在文件系统的页缓 ...