碎碎念

为啥要写这个库呢?

  • 尝试自己写一个库调用,学习一下这个流程,为以后做准备
  • 日历库在网上的资料太少了,而这个功能却又很实用
  • 自己做的项目都会涉及到事件导出功能,不想重复写代码

这个库目前可以支持日历事件的直接导出、删除,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使用教程(日历事件导出封装库)的更多相关文章

  1. Altium Designer如何从已有的PCB图中导出封装库

    1.打开PCB文件 2.选择  Design -> Make Integrated Library  (生成集成库) 注意,一定要在PCB 文件下  生成集成库!! 最终生成这个文件,打开这个文 ...

  2. 调用Android自带日历功能(日历列表单、添加一个日历事件)

    调用Android自带日历功能  觉得这篇文章不错,转载过来. 转载:http://blog.csdn.net/djy1992/article/details/9948393 Android手机配备有 ...

  3. Android ROM 制作教程

    本文来自: 起点手机论坛 具体文章參考:http://www.qdppc.com/forum.php?mod=viewthread&tid=43751&fromuid=1 1.Andr ...

  4. Android基础新手教程——3.7 AnsyncTask异步任务

    Android基础新手教程--3.7 AnsyncTask异步任务 标签(空格分隔): Android基础新手教程 本节引言: 本节给大家带来的是Android给我们提供的一个轻量级的用于处理异步任务 ...

  5. Android基础新手教程——3.4 TouchListener PK OnTouchEvent + 多点触碰

    Android基础新手教程--3.4 TouchListener PK OnTouchEvent + 多点触碰 标签(空格分隔): Android基础新手教程 本节引言: 如题,本节给大家带来的是To ...

  6. Android基础新手教程——3.8 Gestures(手势)

    Android基础新手教程--3.8 Gesture(手势) 标签(空格分隔): Android基础新手教程 本节引言: 周六不歇息,刚剪完了个大平头回来.继续码字~ 好的,本节给大家带来点的是第三章 ...

  7. Android Studio使用教程(二)

    以下是本次Google I/O大会发布的IDE Android Studio使用教程第二篇: 在Android Studio使用教程(一)中简要介绍了Android Studio的基本使用,包括安装. ...

  8. Android Studio系列教程五--Gradle命令详解与导入第三方包

    Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...

  9. Android自定义视图教程

    Android自定义视图教程 Android的UI元素都是基于View(屏幕中单个元素)和ViewGroup(元素的集合),Android有许多自带的组件和布局,比如Button.TextView.R ...

随机推荐

  1. Natas30 Writeup(sql注入)

    Natas30: 本关是一个登录页面,查看源码,可以发现关键代码. if ('POST' eq request_method && param('username') &&am ...

  2. Linux常用命令 - wget命令详解(重点)

    21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 下载i ...

  3. Python Django撸个WebSSH操作Kubernetes Pod

    优秀的系统都是根据反馈逐渐完善出来的 上篇文章介绍了我们为了应对安全和多分支频繁测试的问题而开发了一套Alodi系统,Alodi可以通过一个按钮快速构建一套测试环境,生成一个临时访问地址,详细信息可以 ...

  4. 洛谷 P5596 【XR-4】题 题解

    原题链接 本题只要 推式子 就可以了. \[y^2-x^2=ax + b \] \[a x + x^2 = y^2 - b \] \[4 x^2 + 4 ax = 4 y^2 - 4b \] \[(2 ...

  5. CTF_WriteUp_HTTP基本认证(Basic access authentication)

    HTTP基本认证 在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供用户名和密码 的一种方式.HTTP基本认证 ...

  6. java-TreeMap

    2019-12-17 10:34:55 //返回小于key的第一个键: K lowerKey(K key); //返回大于key的第一个键: K higherKey(K key); //返回小于等于k ...

  7. 一起了解 .Net Foundation 项目 No.22

    .Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. Windows Templ ...

  8. Java 学习笔记 第一章:Java语言开发环境搭建

    第一章:Java语言开发环境搭建 第二章:常量.变量和数据类型 第三章:数据类型转换.运算符和方法入门 1.Java虚拟机——JVM JVM(Java Virtual Machine ):Java虚拟 ...

  9. [codevs2597]团伙<并查集>

    题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友 ...

  10. Git之旅

    ithub安装,我选择的是windows下的版本. git配置用户信息 安装完成后,还需要最后一步设置,在命令行输入: $git config --global user.name "You ...