Phonegap 联系人。更新联系人时保存重复的电话号码

Posted

技术标签:

【中文标题】Phonegap 联系人。更新联系人时保存重复的电话号码【英文标题】:Phonegap contact.save duplicate phoneNumbers when update a contact 【发布时间】:2012-10-27 17:54:52 【问题描述】:

我对 Phonegap contacts.save 有疑问。当我创建联系人在 iosandroid 中完美运行,但是,当我尝试更新联系人时,有重复的文件作为电话号码、电子邮件、url、ims、地址,我使用的是 Phonegap 2.1 和 Xcode 4.5.1。

有人可以帮我解决这个问题吗?我很感激你的时间。谢谢。

简历中:

navigator.contacts.create();工作正常。 当我尝试更新联系人时,正确保存,但添加电话号码而不是更新。

我的代码是:

var options = new ContactFindOptions();
options.filter = 20;  //just it's an example. Looking for id 20.
var fields = ['id'];
var contact;   
navigator.contacts.find(fields,function(contacts)
    if (contacts.length==0) 
       contact = navigator.contacts.create();
    else
       contact = contacts[0];

    var tContactName = new ContactName();
    tContactName.givenName = 'Name';
    tContactName.LastName = 'LastName';
    contact.name = tContactName;    

    var tPhoneNumbers[2];
    tPhoneNumbers[0] = new ContactField('work', '123456789012',true);
    tPhoneNumbers[1] = new ContactField('home', '120987654321', false);
    contact.phoneNumbers = tPhoneNumbers;

    contact.save(function(contact) 
       navigator.notification.alert('Saved sucessfully!!!',function(),'Title');
    , function(contactError) 
       navigator.notification.alert('Error contact save: '+contactError.code,function(),'Title');
    
, function(contactError) 
       navigator.notification.alert('Error contact find: '+contactError.code,function(),'Title');
, options);

【问题讨论】:

【参考方案1】:

根据 W3C Contact 规范,代码的工作方式完全正确。但这并不意味着它有意义:)

无论如何,当您创建一个新的电话号码数组并将其设置为与contact.phoneNumbers 属性相同时,您实际上是在向联系人添加电话号码。如果您想编辑/替换现有的电话号码,您需要将电话号码作为“字段”的一部分。然后,您需要遍历现有的电话号码并根据需要对其进行编辑。

是的,这是违反直觉的,但这是适合您的 W3C api。

【讨论】:

【参考方案2】:

您必须为已创建的电话号码联系人字段分配值,而不是使用 new ContactField 再次为电话号码创建新值。

所以这里是更新电话号码的例子,

contact.tphoneNumbers[0].value = 123456789012 
contact.tphoneNumbers[1].value = 120987654321

那么在更新时不要使用contact.phoneNumbers = tPhoneNumbers;,而是直接调用save 方法就可以了。

【讨论】:

以上是关于Phonegap 联系人。更新联系人时保存重复的电话号码的主要内容,如果未能解决你的问题,请参考以下文章

用于加载联系人的Phonegap Jquery Pagination - 当用户到达最后一页时如何动态添加页面?

如何通过Phonegap查找具有iOS格式的联系人电话号码?

IOS(Phonegap)中按姓名排序联系人(姓名中英文显示)

Zimbra 管理员如何更新用户邮箱中保存的联系人信息?

contacts.find 在 Android 4 上不起作用(phonegap)

Phonegap、AngularJs 和联系人插件:如何渲染联系人图像