有没有办法设置从 Google 日历到我的 android 应用程序的推送通知?
Is there a way to set up a push notification from Google Calendar to my android app?
我正在使用具有 READ_CALENDAR 权限的 Google 日历 API 从日历中查询某些足球比赛,并将它们与我的裁判应用程序的结果集成在一起显示。目前,如果我在用户的日历中添加新游戏,我会查询 onConnected 日历,这还不够频繁。
显然,每当我显示数据时,我都可以重新查询日历 API,但我希望收听来自日历 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();
}
}
日历事件通过查询检索(参见 Google Doc). Queries return Cursor
objects (see Cursor JavaDoc)。 Cursor
物体可以用 registerContentObserver()
观察。
所以查询日历事件,注册一个 Content Observer 并打开你的 Cursor。您应该通过您的 Content Observer 接收事件更新。
我正在使用具有 READ_CALENDAR 权限的 Google 日历 API 从日历中查询某些足球比赛,并将它们与我的裁判应用程序的结果集成在一起显示。目前,如果我在用户的日历中添加新游戏,我会查询 onConnected 日历,这还不够频繁。
显然,每当我显示数据时,我都可以重新查询日历 API,但我希望收听来自日历 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();
}
}
日历事件通过查询检索(参见 Google Doc). Queries return Cursor
objects (see Cursor JavaDoc)。 Cursor
物体可以用 registerContentObserver()
观察。
所以查询日历事件,注册一个 Content Observer 并打开你的 Cursor。您应该通过您的 Content Observer 接收事件更新。