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(); final String[] プロジェクション = { People._ID, People.NAME, People.NUMBER }; 最終文字列 sa1 = "%A%"; // "A" カーソルを含む = resolver.query(People.CONTENT_URI, プロジェクション, 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

begin 列に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 に答える