Does that mean this is affected by network? Would adding a contact while offline repro it reliably then?
On Tue, Aug 14, 2012 at 4:17 PM, Simon MacDonald (JIRA) <j...@apache.org>wrote: > > [ > https://issues.apache.org/jira/browse/CB-344?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13434464#comment-13434464] > > Simon MacDonald commented on CB-344: > ------------------------------------ > > Well we did not change any of the native code. Basically it all depends on > how fast your phone syncs with Google. If the contact is not synched by the > time we are ready to return from the save command you can get a false > failure. > > > Adding a new Contact associated to a Google Android account will fire > error callback > > > ------------------------------------------------------------------------------------ > > > > Key: CB-344 > > URL: https://issues.apache.org/jira/browse/CB-344 > > Project: Apache Cordova > > Issue Type: Bug > > Components: Android > > Affects Versions: 1.5.0 > > Environment: Android devices synchronized to a Google account. > NOT AFFECTED: Android devices *not* synchronized to a Google account. > > Reporter: Filip Maj > > Assignee: Joe Bowser > > Fix For: Master > > > > > > For Android devices sync'ed to a Google account, the native framework > will end up, by default, creating and adding a new contact to the Google > account. However, there is an issue with the current implementation. The > way the Contact Manager class executes the {{save}} method, it [runs > through the motions of saving, then when that completes, tries to retrieve > the newly-created contact immediately| > https://github.com/apache/incubator-cordova-android/blob/master/framework/src/org/apache/cordova/ContactManager.java#L91 > ]. > > The issue arises when [checking for the newly-created > contact|work/src/org/apache/cordova/ContactManager.java#L94]. What seems to > be happening behind the scenes is there is a delay between when the contact > is saved, and when the contact becomes available/searchable (possibly due > to cloud synchronization with Google services?). Therefore, trying to > retrieve the contact immediately after creating it generally causes the > error callback to fail. This behaviour is exhibited in [the mobile-spec > contact save() test| > https://github.com/apache/incubator-cordova-mobile-spec/blob/master/autotest/tests/contacts.tests.js#L258-L284 > ]. > > Interestingly enough, on a device that is *not* associated to a Google > account, this test passes every time. > > Possibly worth investigating is whether contacts created and > associated/saved to other types of accounts (Exchange?) exhibit the same > problem. > > One naive workaround that I can think of is to {{sleep}} in a {{while}} > loop inside the {{save}} method in ContactManager until the contact is > found, and then fire off the appropriate callback. However we want to make > sure the PluginManager fires off {{save}} executions on a separate thread > for this, probably. > > -- > This message is automatically generated by JIRA. > If you think it was sent incorrectly, please contact your JIRA > administrators: > https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa > For more information on JIRA, see: http://www.atlassian.com/software/jira > > >