我正在尝试使用日历将事件添加到我的应用程序中。根据CalenderContract,每次向日历添加事件时我都需要提供一个常量ID。我不知道该怎么做。

我尝试使用在某些设备上可用的calender_ID =1和在某些设备上也可用的calender_ID = 3

我认为会有一些默认ID可以用来使其正常工作。

谁能告诉我如何做到这一点?

提前致谢。

最佳答案

您可以通过以下代码获取日历ID:

    String projection[] = {"_id", "calendar_displayName"};
    Uri calendars;
    calendars = Uri.parse("content://com.android.calendar/calendars");

    ContentResolver contentResolver = c.getContentResolver();
    Cursor managedCursor = contentResolver.query(calendars, projection, null, null, null);

    if (managedCursor.moveToFirst()){
        m_calendars = new MyCalendar[managedCursor.getCount()];
        String calName;
        String calID;
        int cont= 0;
        int nameCol = managedCursor.getColumnIndex(projection[1]);
        int idCol = managedCursor.getColumnIndex(projection[0]);
        do {
            calName = managedCursor.getString(nameCol);
            calID = managedCursor.getString(idCol);
            m_calendars[cont] = new MyCalendar(calName, calID);
            cont++;
        } while(managedCursor.moveToNext());
        managedCursor.close();
    }


因此,您可以在运行时获取日历ID并使用它。您不需要硬编码的1或3列ID。

08-17 03:51