我也試圖瞭解更多關於ContentUris的內容,因爲我有一段代碼在CalendarContract Instances表中不起作用。這很奇怪,因爲我不需要將它們傳遞給我開發的日曆或事件表查詢。
因此,我添加了appendId語句,並在當前UTC時間傳遞了兩個值,現在代碼正常工作。我的代碼中的實際查詢使用當前時間查找當前事件 - 請參閱下面的代碼。如果我將appendID語句取出,則會引發異常 - 我認爲這是類似於Content Provider 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語句實際上有什麼影響,例如,這些值添加任何約束。它看起來像我的實際查詢重寫任何傳入的隱含範圍,我真的不明白爲什麼他們是必需的。
希望從更瞭解這一點的人那裏得到一個簡短的解釋會有利於開發者社區......