Google日历获取活动

时间:2016-05-13 09:27:19

标签: events get google-calendar-api

我正在使用此代码并从日历中获取事件并且它工作正常但我想从谷歌帐户日历中获取事件。例如,我想获取(deepakcando90@gmail.com)谷歌日历账户事件也?我知道这是可能的,但不知道如何实现它?

      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("EEEE, MMMM dd, yyyy");

     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/events"), (new String[] { "calendar_id", "title", "description", "dtstart", "dtend", "eventLocation" }), "(" + dtstart + ">" + after + " and " + dtend + "<" + endOfDay.getTimeInMillis() + ")", null, "dtstart ASC");
    gCalendar = new ArrayList<GoogleCalendar>();
    try {
        System.out.println("Count=" + cursor.getCount());

        if (cursor.getCount() > 0) {

            System.out.println("the control is just inside of the cursor.count loop");
            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);
                googleCalendar.setDtstart(dtstart1);
                String dtend1 = cursor.getString(4);
                googleCalendar.setDtend(dtend1);
                String eventlocation = cursor.getString(5);
                googleCalendar.setEventlocation(eventlocation);

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

}

1 个答案:

答案 0 :(得分:0)

您可以尝试OAuth 2.0 service accounts来正确访问用户帐户。使用服务帐户可以模拟用户并代表他们执行操作。

  

以域名形式访问域名日历

     

如果使用service account进行身份验证,则应用可以访问域拥有的日历,而无需用户凭据。服务帐户必须使用domain-wide authority delegation进行必要的访问。要模拟用户帐户,请使用setServiceAccountUser工厂的GoogleCredential方法指定用户帐户的电子邮件地址。

我希望它有所帮助。古德勒克:)