同步Android手機系統日曆事件(日程)

2021-07-25 10:36:28 字數 2277 閱讀 5435

之前開發的應用要求的乙個功能是同步手機系統日曆日程,發現網上也沒什麼總結好的答案,查閱了些資資料沒有發現android有獲取指定日期事件的方法,於是自己就研究了一番。

1、先在android的配置檔案中新增讀取日曆的許可權

android

:name=

"android.permission.read_calendar"

/>

android

:name=

"android.permission.write_calendar"

/>

2、不同版本的日曆url路徑:

if (integer.parseint(build.version.sdk

) >= 8) else

3、我通過handler_message機制傳送訊息查詢資料庫,在查詢資料庫之前對於於android6.0以後的系統,要先判斷相應的許可權是否開啟,判斷**如下

int 

result= 0

;if (android.os.build.version.sdk_int

>= android.os.build.version_codes.m

)

如果result為0的話說明相應的許可權已開啟,若不為0,則未開啟,即可不進行查詢或通知使用者開啟相應許可權等後續操作

4、查詢資料庫

private listevents=new arraylist<>;//儲存查詢結果                  

public void query(),

null);

while (cursor.movetonext()) else if (textutils.isempty(duration))

}if (cursor!= null && !cursor.isclosed())

messagemsg= new message();

msg.what = mainactivity.query_system_events

;msg.obj = events;;

handler.sendmessage(msg);

}

}//開始時間和結束時間是13位時間戳

private void 

setnormalevents(cursor cursor, string starttime, string endtime)

} else else if (dstart<start&&dtend>start&&dtend<end) else if (dstart<start&&dtend>end) else if (dstart>start&&dstart<end&&dtend>end) }}

/*** 設定基本資料**

@param

cursor

*@param

bean

*/private void

setbasedate(cursor cursor, event bean)

//重複事件重複規則沒有找到好方法進行解析還在研究中

private void

setrepeatevents(cursor cursor, string starttime) else if (dstart<start)

} }

這段**可以獲取指點日期的系統日曆事件,對於開始時間在指定日期 的重複事件也可以讀出,當鑑於本人能力有限沒有能解決了重複事件rrule規則,對於重複事件的處理還不完善,哪位大神有好方法,解決重複日程的問題,請指教

Android 獲取手機系統資訊

log.e model build.model 獲取手機型號 log.e brand build.brand android系統定製商 log.e sdk build.version.sdk sdk版本 log.e sdk int string.valueof build.version.sdk i...

Android 日曆控制項 TimesSquare

android用法 1.先導入library包,可去github 裡面也有包含 2.新建專案把library新增到新專案中,編譯 3.當你看到 gen目錄下有了com.squareup.timessquare這個包時,說明library匯入編譯成功,這樣在新專案中就可以呼叫到calenderpick...

Android 手機替換系統應用

開發中我們一般使用debug的apk包,但是有時需要安裝release包,如果是普通的應用可以直接刪除,但是如果是系統應用則很難刪除,本文主要介紹在ubuntu系統下替換系統android手機中的系統應用。由於目前ubuntu系統預設的adb最高版本是adb v1.0.31,因此本文分兩個部分介紹如...