如何在Android中读取Google日历事件?

问题描述:

我读所有的Android日历事件,它是通过使用此下面的代码工作正常,但我想我。如何能做到这一点,以获取所有与用户邮件帐户的谷歌日历事件?任何建议或示例程序将非常有用!如何在Android中读取Google日历事件?

例如:我想要得到[email protected]的事件(这是我在Android手机打开邮件帐户)

public static void readCalendarEvent(Context context) throws ParseException { 
     ContentResolver contentResolver = context.getContentResolver(); 
     Calendar calendar = Calendar.getInstance(); 
     String dtstart = "dtstart"; 
     String dtend = "dtend"; 


     SimpleDateFormat displayFormatter = new SimpleDateFormat("MMMM dd, yyyy (EEEE)"); 

     stime=displayFormatter.format(calendar.getTime());  

     SimpleDateFormat startFormatter = new SimpleDateFormat("MM/dd/yy"); 
     String dateString = startFormatter.format(calendar.getTime()); 

     long after = calendar.getTimeInMillis(); 
     SimpleDateFormat formatterr = new SimpleDateFormat("hh:mm:ss MM/dd/yy"); 
     Calendar endOfDay = Calendar.getInstance(); 
     Date dateCCC = formatterr.parse("47:59:59 " + dateString); 
     endOfDay.setTime(dateCCC); 



     cursor = contentResolver.query(Uri.parse("content://com.android.calendar/calendars"), (new String[] { "calendar_id", "title", "description", "dtstart", "dtend","eventTimezone", "eventLocation" }), "(" + dtstart + ">" + after + " and " + dtend + "<" + endOfDay.getTimeInMillis() + ")", null, "dtstart ASC"); 
     gCalendar = new ArrayList<GoogleCalendar>(); 
     try { 


      if (cursor.getCount() > 0) { 


       while (cursor.moveToNext()) { 
        GoogleCalendar googleCalendar = new GoogleCalendar(); 
        gCalendar.add(googleCalendar); 
        int calendar_id = cursor.getInt(0); 
        googleCalendar.setCalendar_id(calendar_id); 
        String title = cursor.getString(1); 
        googleCalendar.setTitle(title); 
        String description = cursor.getString(2); 
        googleCalendar.setDescription(description); 
        String dtstart1 = cursor.getString(3); 
        dt=convertDate(dtstart1,"hh:mm:ss"); 

        googleCalendar.setDtstart(dt);     

       String dtend1 = cursor.getString(4); 
        googleCalendar.setDtend(dtend1); 


        String eventTimeZone=cursor.getString(5); 
        googleCalendar.setEventTimeZone(eventTimeZone); 
        String eventlocation = cursor.getString(6); 

        googleCalendar.setEventlocation(eventlocation); 



       } 
      } 
     } catch (AssertionError ex) { 
      ex.printStackTrace(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

弄来的解决方案?如果是的话请帮助我。 –

+0

你检查这个网站 - https://live.temboo.com/library/Library/Google/Calendar/
它可以帮助你。参考号码SO-https://*.com/questions/15438606/how-to-start-with-google-calendar-api-in-android – Yup

您可以阅读this page。它写道,你如何获得日历信息。

简单地说,

  1. 得到记录在Android设备的帐户。 (返回的对象是帐户。)
  2. 得到具体有日历列表。
  3. 获取特定时间范围内的事件。 (这是一个日历。)
  4. 为所有日历重复3。

这个职位是有点老了,但这里是获取在Android的相关Calendar内容提供商数据的另一种简单的解决方案:

使用此lib目录下:https://github.com/EverythingMe/easy-content-providers

现在,让所有日历:

CalendarProvider calendarProvider = new CalendarProvider(context); 
List<Calendar> calendars = calendarProvider.getCalendars().getList(); 

或者,让所有活动的具体日程

List<Event> calendars = calendarProvider.getEvents(calendar.id).getList(); 

而且也有选项来获得提醒,与会者,实例

它与列表或光标有一个示例应用程序,看看它的外观和工作方式。 事实上,对于所有Android内容提供商,如支持:联系人,短信,通话,... 完整文档的所有选项:https://github.com/EverythingMe/easy-content-providers/wiki/Android-providers

希望它能帮助:)

+0

复发性事件问题 –

+0

@sromku它似乎并没有实现setter方法.. 。很大的*度虽然 –

+0

有人可以发布一个完整的例子吗? –