首页 文章

如何使用Android在Google Calendar API中创建活动

提问于
浏览
2

我正在尝试使用Android在Google日历中插入一些事件 . 要阅读日历,Googles开发者页面上有一个Android快速入门教程,它可以正常工作 . 但是没有用于插入事件的Android代码示例,我刚刚找到了一个Java代码示例:

Event event = new Event()
            .setSummary("Google I/O 2015")
            .setLocation("800 Howard St., San Francisco, CA 94103")
            .setDescription("A chance to hear more about Google's developer products.");

    DateTime startDateTime = new DateTime("2015-05-28T09:00:00-07:00");
    EventDateTime start = new EventDateTime()
            .setDateTime(startDateTime)
            .setTimeZone("America/Los_Angeles");
    event.setStart(start);

    DateTime endDateTime = new DateTime("2015-05-28T17:00:00-07:00");
    EventDateTime end = new EventDateTime()
            .setDateTime(endDateTime)
            .setTimeZone("America/Los_Angeles");
    event.setEnd(end);

    String calendarId = "primary";
    event = service.events().insert(calendarId, event).execute();
    System.out.printf("Event created: %s\n", event.getHtmlLink());

问题是:'无法解决符号'服务'' . 是否有可能导入“服务”,因此我可以使用Java代码插入Android事件,还是必须使用其他方式来创建事件?

链接到谷歌创建活动的介绍:https://developers.google.com/google-apps/calendar/create-events

1 回答

  • 2

    我知道你是否已经找到了办法 . 但我只想尝试解决这个问题 . 如果您已阅读文档并设置Calendar Activity类,那么您应该已经使用所需的权限初始化了 mCredential 对象 . 然后你要做的就是调用为创建事件而提供的简单java代码 . 我提供了一个示例方法来做到这一点:

    public void createEvent(GoogleAccountCredential mCredential) {
    
        HttpTransport transport = AndroidHttp.newCompatibleTransport();
        JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
        com.google.api.services.calendar.Calendar service = new com.google.api.services.calendar.Calendar.Builder(
                transport, jsonFactory, mCredential)
                .setApplicationName("R_D_Location Callendar")
                .build();
    
    
        Event event = new Event()
                .setSummary("Event- April 2016")
                .setLocation("Dhaka")
                .setDescription("New Event 1");
    
        DateTime startDateTime = new DateTime("2016-04-17T18:10:00+06:00");
        EventDateTime start = new EventDateTime()
                .setDateTime(startDateTime)
                .setTimeZone("Asia/Dhaka");
        event.setStart(start);
    
        DateTime endDateTime = new DateTime("2016-04-17T18:40:00+06:00");
        EventDateTime end = new EventDateTime()
                .setDateTime(endDateTime)
                .setTimeZone("Asia/Dhaka");
        event.setEnd(end);
    
        String[] recurrence = new String[]{"RRULE:FREQ=DAILY;COUNT=2"};
        event.setRecurrence(Arrays.asList(recurrence));
    
        EventAttendee[] attendees = new EventAttendee[]{
                new EventAttendee().setEmail("abir@aksdj.com"),
                new EventAttendee().setEmail("asdasd@andlk.com"),
        };
        event.setAttendees(Arrays.asList(attendees));
    
        EventReminder[] reminderOverrides = new EventReminder[]{
                new EventReminder().setMethod("email").setMinutes(24 * 60),
                new EventReminder().setMethod("popup").setMinutes(10),
        };
        Event.Reminders reminders = new Event.Reminders()
                .setUseDefault(false)
                .setOverrides(Arrays.asList(reminderOverrides));
        event.setReminders(reminders);
    
        String calendarId = "primary";
        try {
            event = service.events().insert(calendarId, event).execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.printf("Event created: %s\n", event.getHtmlLink());
    
    }
    

    另一件事是你必须通过AsyncTask调用这个方法 . 创建事件的原因是后台进程 . 我希望这种方法也能解决你无法解决符号服务的问题 .

相关问题