有没有办法设置从谷歌日历到我的Android应用程序的推送通知?

时间:2016-05-25 18:08:05

标签: android google-calendar-api

我正在使用具有READ_CALENDAR权限的Google Calendar API从日历中查询某些足球比赛,并将其与我的裁判应用程序的结果集成在一起。目前我在onConnected上查询日历,如果我在用户的日历中添加新游戏,这通常不够。

显然,每当我显示数据时,我都可以重新查询日历API,但我希望听到来自Calendar API的推送通知,说明已添加新事件。这里的API:https://developer.android.com/guide/topics/providers/calendar-provider.html没有提及任何内容。

但是,这里:https://developers.google.com/google-apps/calendar/v3/push讨论了向您自己的服务器发送推送通知。有人知道从应用程序中做同等操作的方法吗?

答案更新。这段代码看起来是否合理,特别是在泄漏资源方面?

    private void updateGamesFromCalendar() {
    //get Calendar games if allowed
    if (checkCalendar()) {
        //Look for events with the keyword list in the Title, and dates between today-7 and today+7
        long nowMs = System.currentTimeMillis();
        String[] eventSelectionArgs = new String[]{Long.toString(nowMs - TimeUnit.DAYS.toMillis(7)),Long.toString(nowMs + TimeUnit.DAYS.toMillis(7)) };
        if ((mEventsCursor != null) && (mCalendarObserver != null)) mEventsCursor.unregisterContentObserver(mCalendarObserver);
        mEventsCursor = getContentResolver().query(RefWatchSettings.uriEvents, RefWatchSettings.EVENT_PROJECTION, RefWatchSettings.whereClauseEvents, eventSelectionArgs, RefWatchSettings.orderByEvents);
        if (mCalendarObserver == null) mCalendarObserver = new CalendarEventObserver(null);
        mEventsCursor.registerContentObserver(mCalendarObserver);

        //delete future Calendar games and replace with the new query
        Game.removeFutureCalendarGames(mGames);
        removeFutureCalendarGamesFromDataItem();

        getGamesFromCalendar();
        refreshGameFragments();
        sendFutureGameNotifications();
    }
}

1 个答案:

答案 0 :(得分:1)

通过查询检索日历事件(请参阅Google Doc)。查询返回Cursor个对象(请参阅Cursor JavaDoc)。使用Cursor可以观察到registerContentObserver()个对象。 因此,请对日历事件进行查询,注册内容观察器并让您的Cursor打开。您应该通过内容观察器接收事件更新。