0

私は既存のすべてのカレンダーを読み込もうとしています。

すべてのタイトルとアカウントを含むHashMapが必要です。誰か助けてくれませんか?これが私の試みです。LogCatには、すべてのカレンダーが表示されます。

public HashMap<String, String> readCalendar(Context context) {

    String[] EVENT_PROJECTION = new String[] {                  
        Calendars.ACCOUNT_NAME,                  
        Calendars.CALENDAR_DISPLAY_NAME                                   
    };

    Cursor managedCursor = null;
    HashMap<String, String> calendars = new HashMap<String, String>();
        Uri calendarUri = CalendarContract.Calendars.CONTENT_URI;
        ContentResolver cr = context.getContentResolver();
        managedCursor = cr.query(calendarUri, EVENT_PROJECTION, null, null, null);

        if (managedCursor != null && managedCursor.moveToFirst()) {


            do {
                    // here I see all accounts and names in the LogCat

                for (int i = 0; i < managedCursor.getColumnCount(); i++) {
                    Log.i(LOG_TAG, managedCursor.getColumnName(i) + "="
                            + managedCursor.getString(i));

                }

                String title = managedCursor.xxxxxx;   // I don't know how
                String account = managedCursor.xxxxx;  // I don't know how


                calendars.put(title, account);

            } while (managedCursor.moveToNext());

            managedCursor.close();
        } else {
            Log.i(LOG_TAG, "No Calendars");
                }
 return calendars;
    }
4

1 に答える 1

1

カレンダーテーブルで列名を探しているようです。これらはAPI(カレンダー列セクション)で説明されています。呼び出しは次のようになります(これらが必要な列の場合):

String title = managedCursor.getString(managedCursor.getColumnIndex(
  CalendarContract.Calendars.NAME));
String account = managedCursor.getString(managedCursor.getColumnIndex(
  CalendarContract.Calendars.ACCOUNT_NAME));
于 2012-06-17T13:32:41.137 に答える