【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

具體實例請看項目內的代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM