碎碎念
為啥要寫這個庫呢?
- 嘗試自己寫一個庫呼叫,學習一下這個流程,為以後做準備
- 日曆庫在網上的資料太少了,而這個功能卻又很實用
- 自己做的專案都會涉及到事件匯出功能,不想重複寫程式碼
這個庫目前可以支援日曆事件的直接匯出、刪除,ics檔案的生成
ics生成檔案中支援重複規則
目前該庫還在完善中?
歡迎提供建議❤
使用方法
引入
在專案中引用即可
implementation 'com.paul.eventreminder:eventreminder:0.0.3'
使用教程
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(Context context,OnExportProgressListener listener)
值得一提的是,刪除判斷的是事件內容末尾的@+ACCOUNT_NAME,所以請保持該名稱在建立和刪除時候要相同。
ICSManager
初始化:
ICSManager icsManager=new ICSManager(Context context,String userName);
同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
具體例項請看專案內的程式碼。