0

在 Jelly Bean 之前,我有一个可以在任何版本的 android 上运行良好的应用程序。我已经把头发拔了好几天了。似乎我以编程方式创建并显示在我的设备上的事件拒绝发送到网络日历。看起来同步一般更快(因此更好),但它似乎坏了???是否必须在事件上设置任何内容以使其同步或防止其同步?

我问是因为我使用设备上的日历手动创建的事件 - 它们同步等。我以编程方式创建的新事件确实会触发设备上的 ChangeObserver 并显示在设备日历上,而不是远程显示。所以一定有一些魔法可以阻止这些事件被发送,从而节省带宽???——这是我可以想象的已添加到 Jelly Bean 中的优化。

如果您知道任何此类行为,请告诉我。如果没有,请让我知道在您参与的任何自定义应用程序中,Jelly Bean 上的同步是否正常工作。非常感谢您的帮助!

下一步将是构建一个可以演示此故障的小型测试应用程序。但我希望它更容易,你们中的一个人已经知道这个问题。

4

1 回答 1

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);

在果冻豆之前,这很好用。使用果冻豆,这条线:

values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getDisplayName());

没有任何通知就失败了!这必须更改为:

values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());

然后一切正常。真正的困难是使用 getDisplayName() 创建的事件是在本地创建的,但它永远不会远程同步。我当然希望其他人看到这一点,这可以节省他们几天的时间。

于 2012-09-27T23:24:22.790 回答