以编程方式添加事件后触发Android日历以进行同步

时间:2011-08-17 14:35:58

标签: android android-2.2-froyo android-sdk-2.3

我正在使用“未记录的”API来读取和写入日历事件,没有什么太难。但问题是,在创建日历事件之​​后,您必须等待轮询期间(我想),设备才能同步它的日历,例如gmail,以便在线显示事件。我发现,如果您直接向日历添加事件,它会立即同步,因此日历应用程序中的某些内容会触发立即同步。

我可以在代码中做些什么来通知设备在添加新事件时完成日历同步吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

ContentResolver类有各种帮助方法来处理同步。试试ContentResolver.requestSync()方法。

答案 1 :(得分:2)

public void syncCalendars()
    {
        Account[] accounts = AccountManager.get(context).getAccounts();
        Log.d(TAG, "Refreshing " + accounts.length + " accounts");
        String authority = CalendarContract.Calendars.CONTENT_URI.getAuthority();
        for (int i = 0; i < accounts.length; i++) {

            Log.d(TAG, "Refreshing calendars for: " + accounts[i]);

            Bundle extras = new Bundle();
            extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
            ContentResolver.requestSync(accounts[i], authority, extras);
        }
    }