私はAndroidカレンダーAPIを使用してデータを読み込んで操作するプロジェクトに取り組んでいます。これは、API 14 CalendarContractと、下位互換性のために、古いデバイス用のより疑わしい文書化されていないAPIの両方で行います。
私は現在、データベースがどのように機能するかを理解するために、データベースをいじっています。ここまでは順調ですね。
私が見つけた問題の1つは、出席者のステータス(他の出席者ではなく、ユーザーのステータス)を変更しようとすると、実際にはそのイベントへの招待を受け入れていないように見えることです。
たとえば、2つのGoogleカレンダーアカウントでこれを行います。アカウントAがデバイスにログインしているアカウントBがイベントを作成し、アカウントAを招待しますイベントがアカウントAデバイスに表示されますカレンダーAPIを介して招待を受け入れようとします。
それが私が苦労している最後のステップです。
これは私がやっていることのようなものです:
ContentValues event = new ContentValues();
event.put("attendeeStatus", "1");//accept
Uri eventsUri = Uri.parse(getCalendarUriBase() + "attendees");
Uri eventUri = ContentUris.withAppendedId(eventsUri, id);
iNumRowsUpdated = getContentResolver().update(eventUri, event, null, null);
これにより、データベース内のattendeeStatusが1に正常に更新されます。
ただし、これによって実際の出席が更新されることはありません。だから私の質問は、この目的のために使用されるデータベーススキーマに別のフィールドがありますか?または、より良い/より効率的な解決策はありますか?および/または、アカウントAがアカウントBのGoogleカレンダーアカウントで承認されたことを確認できるように、これを強制的にGoogleカレンダーシステムと同期させることはできますか?
私が以下を試したことは注目に値します:
getContentResolver().notifyChange(eventUri, null);
getContentResolver().notifyChange(eventsUri, null);
これは役に立たなかった。
注:上記のコードは特に4.0より前のデバイス用ですが、ICSの場合もほぼ同じです。