1

我对日历有点陌生。listview任何人都可以建议我如何从默认日历(不是谷歌日历或任何其他唯一默认日历)中获取事件(例如生日/会议提醒)并将其显示recyclerview在我们的应用程序中吗?

4

1 回答 1

0

这个SO question描述了读取和写入日历。您需要阅读日历的关键信息是:

Uri uri = CalendarContract.Calendars.CONTENT_URI;
String[] projection = new String[] {
   CalendarContract.Calendars._ID,
   CalendarContract.Calendars.ACCOUNT_NAME,
   CalendarContract.Calendars.CALENDAR_DISPLAY_NAME,
   CalendarContract.Calendars.NAME,
   CalendarContract.Calendars.CALENDAR_COLOR
};

Cursor calendarCursor = managedQuery(uri, projection, null, null, null);

然后你需要从游标中提取数据:

ArrayList<String> ids = new ArrayList<String>();
try {
        if (cursor.getCount() > 0) {
            while (cursor.moveToNext()) {
                String id= cursor.getString(0);
                calendars.add(id);  
            }
        }
    } catch (AssertionError ex) { /*TODO: log exception and bail*/ }

然后你有 ids 并且需要查询每个 ids 的事件。这在此SO question的已接受答案中进行了描述。这个github存储库也有一个解决方案。这些方法中的大多数仅适用于高于 4.2 的 Android 版本。

于 2017-02-24T06:14:33.937 回答