CalendarContract Instances テーブル内で機能しないコードのセクションがあったため、私も ContentUris についてもっと理解しようと努めてきました。私が開発した Calendars または Events テーブルのクエリにこれらを渡す必要がなかったため、これは奇妙です。
そのため、appendId ステートメントを追加し、両方の値に対して UTC で現在の時刻を渡すと、コードが機能するようになりました。私のコードの実際のクエリは、現在の時刻を使用して現在のイベントを探しています。以下のコードを参照してください。appendID ステートメントを取り出すと、例外が発生します - コンテンツ プロバイダーの URL が見つからないようなものだったと思います。
String instanceQuery = "EVENT_ID = " + event_id +
" AND begin <= " + now +
" AND end >= " + now;
Uri.Builder eventsUriBuilder = CalendarContract.Instances.CONTENT_URI.buildUpon();
ContentUris.appendId(eventsUriBuilder, now);
ContentUris.appendId(eventsUriBuilder, now);
Uri eventsUri = eventsUriBuilder.build();
Cursor instanceCursor = null;
instanceCursor = ctx.getContentResolver().query(eventsUri,
new String[] { CalendarContract.Instances.EVENT_ID,
CalendarContract.Instances.BEGIN,
CalendarContract.Instances.END},
instanceQuery,
null,
null);
私のコードは機能していますが、値が制約を追加するなど、appendID ステートメントが実際にどのような影響を与えるかを知りたいです。私の実際のクエリは、渡された暗黙の範囲をオーバーライドしているように見えますが、なぜそれらが必要なのか本当にわかりません。
これをもっと理解している人からの簡単な説明が開発者コミュニティに役立つことを願っています....