我使用旧设备上的非官方API从Stock Google Calendar
获取事件。现在我重构代码以使用selection
的{{1}}和selectionArgs
而不是仅手动绑定android.content.ContentResolver.query()
(它生成有效的SQL并在我的测试设备上运行[2.2和2.3] .3]没有问题)。
问题:如果我立即绑定参数(例如:selection
),我的测试应用程序会返回预期的事件,但是当Android绑定时(例如:deleted = 0
与deleted = ?
没有事件被返回。忽略String[] { "0" }
的原因是什么?
LogCat显示没有错误。
示例(预期)
selectionArgs
返回255个事件,因为我的日历今年发生了255个事件。
示例(测试用例)
测试:摩托罗拉Milestone,CyanogenMod 7(Android 2.3.3)。
STATIC: cursor=225
DYNAMIC: cursor=255
我假设(但希望我做错了)Android或日历应用程序在绑定时失败。我发现了一个类似问题的错误报告,但我不确定日历应用程序是否受到影响:http://code.google.com/p/android/issues/detail?id=4467
代码
STATIC: cursor=225
DYNAMIC: cursor=0
答案 0 :(得分:2)
CalendarProvider似乎有一个错误。
query
的实现只会忽略用户提供的selectionArgs
参数。
如果您比较Android 2.3.3和Android 4.0.3中的实施,您会注意到他们添加了selectionArgs
作为参数并构建了自己的combine
并提供了用户的。
此处修复了错误:Support cleanup of Calendar.java