我有一个适用于Jelly Bean之前的任何Android版本的应用程序。我已经把头发拉了好几天了。似乎我以编程方式创建的事件显示在我的设备上拒绝发送到Web日历。看起来确实同步通常更快(因此更好),但似乎打破了???是否有任何必须在事件上设置允许它同步,或保持它不被同步?
我问,因为我使用设备上的日历手动创建的事件 - 它们同步等等。我以编程方式创建的新事件会触发设备上的ChangeObserver并显示在设备日历上,而不是远程显示。因此,必须有一些魔法可以防止发送这些事件,从而节省带宽??? - 这是我可以想象已添加到Jelly Bean的优化。
如果你知道有这样的行为,请告诉我。如果没有,请告诉我在您参与的任何自定义应用程序中,Jelly Bean上的同步是否正常工作。非常感谢您的帮助!
下一步将是构建一个可以证明此失败的小型测试应用程序。但我希望它更容易,你们中的一个人已经知道这个问题了。
答案 0 :(得分:0)
这需要很长时间才能找到。我希望它可以帮助别人。 在添加一个事件时,我正在调用通常的
ContentValues values = new ContentValues();
values.put(Events.DTSTART, startMillis);
values.put(Events.DTEND, endMillis);
values.put(Events.TITLE, title);
values.put(Events.DESCRIPTION, description);
values.put(Events.EVENT_LOCATION, location);
values.put(Events.CALENDAR_ID, mCalendarTag.mID);
values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getDisplayName());
Uri uri = mContentResolver.insert(Events.CONTENT_URI, values);
在Jelly Bean之前,这很好用。使用Jelly Bean,行:
values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getDisplayName());
在没有任何通知的情况下失败!必须将其更改为:
values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
然后一切正常。真正的困难是使用getDisplayName()创建的事件是本地创建的,但它永远不会远程同步。我当然希望别人看到这个,并且可以节省好几天。