【Junit】Androidのカレンダーのデータを扱うについて¶
Androidのカレンダー操作¶
カレンダーはユーザーのカレンダー事件を提供する資源の倉庫です。カレンダープロバイダAPIを使用すると、該当するカレンダー、イベント、会議、リマインダコンテンツクエリ、挿入、更新を実行し、削除の操作をすることができる。
カレンダーの模型¶
各コンテンツプロバイダは、それが一意に共通のデータ·セットのURI(Uriオブジェクトがカプセル化されている)を識別する公開する。コンテンツプロバイダは、個別のURIを公開する各テーブルを与えて、複数のデータセット(複数のテーブル)を制御する。 URIは、すべての先頭に"コンテンツ//"が設けられている。コンテンツ識別データによって制御されるようにこれが提供される。それへのカレンダープロバイダ各クラス(テーブル)URI定数を定義されている。 URI形式は

ユーザーは複数のカレンダーを持つことができる、異なるアカウントの種類と異なるカレンダーを関連付けることができる。
CalendarContractクラスは、カレンダー事象に関連した情報のデータモデルを定義する。このデータは、以下に示す複数のテーブルに格納される。

Calendarsテーブル¶

カレンダープロバイダAPIは、柔軟かつ強力に設計されています。重要なのはそれが良いエンドユーザーエクスペリエンスを提供し、カレンダーとそのデータの整合性を保護することであるため、 APIの使用方法は、以下のものを維持する必要があります
1. 挿入、更新、およびカレンダーのイベントを表示する:直接カレンダーからは、挿入、変更、およびイベントを読み取るを提供するには、適切な権限が必要です。完全なカレンダーアプリケーションまたは同期アダプターを作成しない場合は、これらのアクセス許可を適用する必要はない。あなたはそれらを置き換えるために読み取りおよび書き込み操作をオブジェクトがサポートするAndroidのインテントからのカレンダーアプリケーションを使用することができます。あなたはIntentオブジェクトを使用すると、アプリケーションは、カレンダーアプリケーションにユーザーを送り、それが所望の動作を実行させるために、フォームを事前に記入します。実行が完了すると、アプリケーションに返されます。カレンダが相互運用可能なアプリケーションの設計を介して行うことができ、それは、一貫性のある強力なユーザーインターフェースをユーザーに提供することができる。これは、詳細については、お勧めの方法です "と、ルックカレンダーIntentオブジェクト"を参照してください。
2. 同期アダプタ。別のサーバーまたはデータソースの同期を持つユーザデバイス上のカレンダーデータへのアダプタを同期。 CalendarContract.CalendarsとCanlendarContract.Eventsテーブルで、いくつかは、同期アダプタを使用する列のために予約されています。彼らは同期アダプタが表示されている場合は、アクセスされるまで、提供およびアプリケーションは、それらを変更しないでください。同期アダプタの詳細については、 "同期アダプタ"を参照してください
以下は、カレンダーを挿入する例です。


以下は、カレンダーを削除する例です。

Eventsテーブル¶
CalendarContract.Eventsテーブルは、単一のイベントの詳細が含まれています。イベントを追加、更新、または削除するには、アプリケーションはWRITE_CALENDAR権限が含まれている、そのマニフェストファイルでなければなりません。
次のイベントは、アダプターが書き込み可能なアプリケーションと同期することにより集計されています。このテーブルのフィールドの完全なリストについては、CalendarContract.Eventsリファレンスを参照してください。

イベントテーブルにデータを追加¶
あなたのアプリケーションが新しいイベントを挿入したい場合、我々は(1つは説明された "使用Intentオブジェクトイベントを挿入する"で)あなたがINSERT Intentオブジェクト型を使用することをお勧めします。ただし、必要な場合は、イベントを直接挿入することができ、このセクションでは、このことを行う方法を説明します。
以下はいくつかのルールのための新しいイベントが挿入されます:
1. DTSTARTフィールドが含まれている必要がありますCALENDAR_ID
2. EVENT_TIMEZONEフィールドが含まれている必要があります。システムのタイムゾーンは、 IDリストをインストールされている取得する方法getAvailableIDs ()を使用します。あなたはイベントタイプを挿入するIntentオブジェクトをINSTERT場合はオブジェクトの挿入シーンは、デフォルトのタイムゾーンを提供するので、このルールは適用されません;
3. 非定期的なイベントでは、 DTENDフィールドを含める必要があります
4. 添付RRULEまたはRDATEフィールドDURATIIONフィールドが含まれている必要があります。を経由してインテントオブジェクトの型は、イベントを挿入するために挿入した場合、このルールは適用されないことに注意してください。このシナリオのためにIntentオブジェクトは、自動的に時間の持続期間に変換するRRULE 、 DTSTARTとDTEND分野組み合わせて使用すると、カレンダーアプリケーションを置くことができます。
以下は、イベントを挿入する例です。

データのイベント·テーブルを削除¶
イベントを削除するには、URIに追加_IDを使うことができるだけでなく、イベントを削除するには、標準の選択基準を使用する。追加のIDを使用している場合は、選択しないでください。アダプタを同期する方法と手段の応用:2削除されたバージョンがあります。削除されたアプリケーションは、"削除"欄が1に設定されている場合、このフラグは同期アダプタを伝え、この行が削除されているし、この削除は、サーバーに渡す必要があります。同期アダプタは、データベースから削除され、関連付けられたデータと一緒に一緒にイベント、意志。
以下は、イベントを削除する例です。

Attendeesテーブル¶
表の各行は、単一のイベントの参加者を表しますCalendarContract.Attendees。指定されたクエリ()参加者のイベントリストに対応するメソッドを呼び出しEVENT_ID。 EVENT_IDは、特別なイベントの試合が続かなければなりません。
次の表では、新たな参加者を挿入するとき、あなたはATTENDEE_NAME以外のすべてのフィールドが含まれている必要があり、出席者のテーブル書き込み可能フィールドが一覧表示されます。

以下は、イベントの参加者を挿入する例です。

以下は、イベントの参加者を削除する例です。

by 呉志娟