0

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

4

0 回答 0