Androidの場合、新しいAPIを使用してカレンダーからデータを取得するには、次の手順を実行する必要があります。
あなたはandroid.permisson.READ_CALENDAR
がCalendarContract
クラスを使用してカレンダーデータとの対話許可が必要です。このクラスは、アプリケーションがカレンダープロバイダと対話するときに使用できるデータモデルを提供します。
カレンダーアプリケーションに登録されているカレンダーを列挙します。これを行うには、ManagedQueryメソッドを呼び出すことができます。少なくとも、カレンダーと返す列のコンテンツUriを指定する必要があります。この列の指定は投影と呼ばれます。 ManagedQuery
を呼び出すと、カレンダープロバイダなどのコンテンツプロバイダにデータを問い合わせることができ、カーソルをクエリの結果とともに返します。あなたがNULLの代わりに複数のパラメータを渡すことができ
string[] calendarsProjection = {
CalendarContract.Calendars.InterfaceConsts.Id,
CalendarContract.Calendars.InterfaceConsts.CalendarDisplayName,
CalendarContract.Calendars.InterfaceConsts.AccountName,
, CalendarContract.Events.InterfaceConsts.Title
, CalendarContract.Events.InterfaceConsts.Dtstart
, CalendarContract.Events.InterfaceConsts.Dtend
};
:投影を指定
var calendarsUri = CalendarContract.Calendars.ContentUri;
。利用可能な他のパラメータを見てくださいhere。
var cursor = ManagedQuery (calendarsUri, calendarsProjection, null, null, null);
管理対象照会は減価償却されていると言われ、それはあなたがContentResolver
を使用する方が良いでしょうさ。日付フィルタと
var cursor = context.ContentResolver.Query(calendarsUri, calendarsProjection, null, null, null);
:
var selection = "((dtstart <= ?) AND (dtend >= ?))";
var selectionArgs = new string[] { startString, endString };
Forms.Context.ApplicationContext.ContentResolver.Query(calendarsUri, calendarsProjection, selection, selectionArgs, null);
または
var ctx = Forms.Context;
var cursor = ctx.ApplicationContext.ContentResolver.Query(calendarsUri, calendarsProjection, null, null, null);
Queryへのパラメータは次のとおりです。
- CR - クエリ
に使用するContentResolverの
- 投影 - 列が
- はエポックからのUTCミリ秒で
- 端を照会する時間範囲の-The開始を始める返す - 時間範囲の端をエポックからのUTCミリ秒で照会する
チュートリアル全体とステップバイステップの説明はhereです。 ContentResolver
hereについて読む
iOSの場合、EventKitを使用する必要があります。 、それのIDによりイベントを取得EventStore
にEventFromIdentifier
メソッドを使用し、イベントから引き出されたEventIdentifier
それを渡すために
:
var mySavedEvent = App.Current.EventStore.EventFromIdentifier (newEvent.EventIdentifier);
カレンダーのイベントを検索するには、NSPredicate
オブジェクトを作成する必要がありますEventStore
のPredicateForEvents
メソッドを使用します。 NSPredicate
は、iOSがマッチを見つけるために使用するクエリデータオブジェクトである:
三番目のパラメータは、nullを渡しすべてのカレンダーを使用するには、照会するカレンダーです。
EKCalendarItem[] events = App.Current.EventStore.EventsMatching (query);
完全なチュートリアルはhere利用可能であり、サンプルのためhereを探す:NSPredicateが作成されると
は、EventStoreのEventsMatchingメソッドを使用して、クエリを実行します。
[Androidカレンダーに追加する前にイベントが存在するかどうかを確認する](http://stackoverflow.com/questions/13466963/check-if-the-event-exists-before-adding-it-to) -the-android-calender) – hankide
@hankide:私はそれを試みたが、私のために働いていなかった –