Access Calendar Events And Reminders In Delphi XE6 Firemonkey On Android


Developer Khalid N. contributed an Android calendar event manager class and demo for Delphi XE6 Firemonkey. The class wraps the Android calendar provider which you can find out more about here. It uses the JNI to access the information and is a good example of how to use the Content Resolver in Delphi. The content resolver is also used for accessing other things like the device contacts. In order to access the calendar you need to have read and write permissions set in your Android manifest (android.permission.READ_CALENDAR and android.permission.WRITE_CALENDAR). It has functions to get the list of available calendars, add a reminder, update a reminder, delete a reminder, and set the completed state of a reminder. The code should work with a few minor changes in Delphi XE5 and AppMethod. The content Here is a sample function from the code where it demonstrates how to use the Content Resolver:
function TCalendarEventsManager.IsAppCalendarExist: integer;
wValues : TJavaObjectArray<JString>;
wArgs : TJavaObjectArray<JString>;
wCursor : JCursor;
wFilter : JString;
Result := -1;
wValues := TJavaObjectArray<JString>.Create(2); //Extracting only calendar name
wValues[0] := StringToJString(‘_id’);
wValues[1] := StringToJString(‘account_name’);
wFilter := StringToJString(‘account_type = ? AND account_name = ?’); //filter
wArgs := TJavaObjectArray<JString>.Create(2); // Arguments to filter calendars list
wArgs[0] := StringToJString(‘LOCAL’);
wArgs[1] := StringToJString(_App_Calendar_Name);
wCursor := fContentResolver.query(StrToJURI(‘content://’),wValues,wfilter,wArgs,nil);
if wCursor.moveToFirst then
Result := wCursor.getLong(0);
On E:Exception do
Raise Exception.create(‘[TCalendarEventsManager.IfAppCalendarExist] : ‘+E.message);
Download the Calendar Event Manager demo for Delphi XE6 Firemonkey.

Comments are closed.