如果Android日历提供程序在查询数据时不返回最新数据,可以尝试以下解决方法:
ContentResolver cr = getContentResolver();
cr.delete(CalendarContract.Calendars.CONTENT_URI.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, "")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, "")
.build(), null, null);
将
和
替换为你的帐户名称和帐户类型。
ContentResolver cr = getContentResolver();
Bundle extras = new Bundle();
extras.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
extras.putBoolean(ContentResolver.SYNC_EXTRAS_FORCE, true);
cr.requestSync(Account, CalendarContract.AUTHORITY, extras);
将Account
替换为你的帐户。
ContentObserver
来监听日历数据的变化,当数据发生变化时,可以及时更新你的应用程序。以下是一个示例代码:ContentResolver cr = getContentResolver();
Uri uri = CalendarContract.Events.CONTENT_URI;
ContentObserver observer = new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
// 数据发生变化,进行相应的处理
}
};
cr.registerContentObserver(uri, true, observer);
当日历数据发生变化时,onChange
方法将被调用,你可以在这里更新你的应用程序。
通过上述方法,你可以解决Android日历提供程序不返回最新数据的问题。