2012-09-25 66 views
0

我有一个应用程序,可以在任何版本的Jelly Bean之前使用。我一直拉着头发好几天。看来,我在设备上显示的编程方式创建的事件拒绝发送到网络日历。它看起来似乎一般是同步更快(因此更好),但似乎打破?是否有任何事件必须在事件上设置,以允许它同步,或保持它不同步?某些日历事件不会在Jelly Bean上同步?

我问,因为我使用设备上的日历手工创建的事件 - 它们同步等。我通过编程创建的新事件确实会触发设备上的ChangeObserver,并显示在设备日历上,而非远程。所以在封面上必须有一些魔法,以防止这些事件被发送,从而节省带宽? - 这是我可以想象的优化,已经被添加到果冻豆。

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

下一步将构建一个小测试应用程序,可以证明这种失败。但我希望这很容易,你们其中一位已经知道这个问题。

回答

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()创建的事件是本地创建的,但它永远不会远程同步。我当然希望别人看到这一点,并为他们节省了好几天的时间。

相关问题