如何获取设备日历(默认日历)事件并显示在我们的应用程序中?
Posted
技术标签:
【中文标题】如何获取设备日历(默认日历)事件并显示在我们的应用程序中?【英文标题】:How to get device Calendar (default calendar) events and display in our Application? 【发布时间】:2017-07-14 20:58:04 【问题描述】:我对日历有点陌生。谁能建议我如何从默认日历(不是谷歌日历或任何其他唯一默认日历)中获取事件(例如生日/会议提醒)并将其显示在我们的应用程序中的listview
/recyclerview
中?
【问题讨论】:
【参考方案1】:这个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 版本。
【讨论】:
以上是关于如何获取设备日历(默认日历)事件并显示在我们的应用程序中?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Apple-Watch 上获取 iPhone 日历事件提醒