1

我正在使用以下代码来获取所有日历并获取每个日历中的第一个事件。
但是当我执行查询时它失败了。
我正在使用以下 URI:
Uri.Builder builder = Uri.parse("content://com.android.calendar/instances/when").buildUpon();
我已经检查并获得了正确的日历 ID 列表,这是查询代码:

Cursor eventCursor = null;
// Create an event cursor to find all events in the calendar
try {
    eventCursor = contentResolver.query(builder.new String[]  { "title", "begin", "end", "allDay"}, "Calendars._id=" + 1, null, "startDay ASC, startMinute ASC");
    Log.d(TAG,"Got Calendar ID = "+id);
} catch (Exception e) {
    Log.d(TAG, "Didn't find calender for ID="+id);
    eventCursor = null;
}

我从 SQL 中得到以下错误:illegalargumentexception invalid column begin
我用谷歌搜索了这个错误,但什么也没找到,另外,我看到所有此类查询都使用这个确切的列并获得成功。

4

2 回答 2

3

您在 query() 方法中给出了错误的参数。这是一些示例代码:

最终 ContentResolver 解析器 = getContentResolver(); 最终字符串 [] 投影 = { People._ID, People.NAME, People.NUMBER }; 最终字符串 sa1 = "%A%"; // 包含一个 "A" 游标 = resolver.query(People.CONTENT_URI, projection, People.NAME + " LIKE ?", new String[] { sa1 }, null);

查看此链接了解更多详情:http://developer.android.com/reference/android/content/ContentResolver.html#query%28android.net.Uri,%20java.lang.String[],%20java.lang.String ,%20java.lang.String[],%20java.lang.String%29

于 2013-10-26T18:20:45.610 回答
1

您在开始列中传递null 。

   eventCursor = contentResolver.query(builder.new String[]  { "title", "begin", "end", "allDay"}, "Calendars._id=" + 1, null, "startDay ASC, startMinute ASC");
于 2013-10-26T18:18:05.180 回答