是否可以使用自定义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一起做我想要的吗?