是否可以使用自定义 where 子句查询 CalendarContract.Instances?
使用此 URI 的正常语法是:
Uri.Builder builder = CalendarContract.Instances.CONTENT_URI.buildUpon();
ContentUris.appendId (builder, startDate);
ContentUris.appendId (builder, endDate);
但是我想通过提供我自己的 where 子句并从 URI 中省略开始和停止时间来操纵开始日期比较。为了一个简单的例子,像这样(“投影”在别处定义):
final Uri uri = CalendarContract.Instances.CONTENT_URI;
String selection = Instances.BEGIN + " >= " + startTime + " and " +
Instances.END + " <= " + endTime;
Cursor cursor = context.getContentResolver().query (
uri,
projection,
selection,
null,
null);
这会导致 DatabaseUtils 异常:
03-16 09:57:06.041 W/System.err: java.lang.IllegalArgumentException: Unknown URL content://com.android.calendar/instances/when
03-16 09:57:06.041 W/System.err: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167)
我的真实代码更复杂。我需要自定义 where 子句,以便我可以调整全天事件的开始时间,这些事件以 UTC 时间而不是本地时间存储。如果没有调整,全天事件的比较在 where 子句和排序中会失败。
是否有不同的 URI 可以与 Instances 一起使用来做我想做的事?