[Delphi] インテントを使用してカレンダーを参照する


インテントを使用したカレンダー データの参照
https://developer.android.com/guide/topics/providers/calendar-provider.html#intent-view
の手法を使って、Android で Google カレンダーを参照してみた

カレンダーのインテントを利用すると、パーミッションの要求を行なう事なく、カレンダーアプリケーション側にユーザーを誘導して、参照や、イベントの挿入などを行なうことができます

サンプルコード

フォーム上にボタンを置き、ボタンのクリックイベントで以下を記述


// uses に Androidapi.Helpers, Androidapi.JNI.APP, Androidapi.JNI.Provider,
//         Androidapi.JNI.JavaTypes, Androidapi.JNI.Net,
//         Androidapi.JNI.GrapicsContentViewText を追加します

// インテントは Intent: JIntent; で定義しています
// uri は uri: JUri_Builder; で定義しています
// カレンダーは mCalendar: JCalendar; で定義しています

// 今日の日付を取得します
mCalendar := TJCalendar.JavaClass.getInstance;

// uri buildUpon を使用して必要なパラメータを設定
uri := TJCalendarContract.JavaClass.CONTENT_URI.buildUpon;
uri.appendPath(stringToJString('time'));
TJContentUris.JavaClass.appendId(uri, mCalendar.getTimeInMillis);

// インテントを作成します
Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_VIEW);

// 参照する日付をセットします
Intent.setData(uri.build);

// startActivity を使ってインテントを飛ばします。
TAndroidHelper.Activity.startActivity(Intent);

今日から 10 日後という場合は


// 今日の日付を取得して +10日します
mCalendar := TJCalendar.JavaClass.getInstance;
mCalendar.add(TJCalendar.JavaClass.DATE, 10);

のように記述します。