【发布时间】:2014-03-18 20:04:44
【问题描述】:
我正在向内容提供商查询约会。
Uri.Builder builder = CalendarContract.Instances.CONTENT_URI.buildUpon();
ContentUris.appendId(builder, startMillis);
ContentUris.appendId(builder, endMillis);
Uri uri = builder.build();
String[] event_projection= new String[] {
Instances.TITLE,
Instances.ALL_DAY,
Instances.CALENDAR_COLOR,
Instances.EVENT_ID,
Instances.BEGIN,
Instances.END,
};
String selection = CalendarContract.Instances.VISIBLE + "='1'";
String sortBy = CalendarContract.Instances.BEGIN + " ASC, " +
CalendarContract.Instances.TITLE + " ASC";
Cursor mCursor = cr.query(uri, event_projection, selection, null, sortBy);
一些用户发送以下崩溃报告:
java.lang.IllegalArgumentException: allDay is true but sec, min, hour are not 0.
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:384)
at android.content.ContentResolver.query(ContentResolver.java:372)
at android.content.ContentResolver.query(ContentResolver.java:315)
这主要发生在 Sony Xperia 设备上,但也发生在 Google Nexus10 上。 查询数据时怎么可能得到这个异常? 首先插入数据时不应该避免这种情况吗?
这是否意味着我必须用 try/catch 包围查询? 这不会减慢查询速度吗?
【问题讨论】:
-
众所周知,索尼会尽可能地破坏 Android API。在某些情况下,它只是坏得无法修复。
标签: android android-contentprovider android-calendar