5

Phonegapcontacts.saveに問題があります。連絡先を作成するとiOSとAndroidで完全に機能しますが、連絡先を更新しようとすると、phoneNumbers、emails、urls、ims、addressesとして重複ファイルがあり、Phonegap2.1とXcode4.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);
4

2 に答える 2

1

コードは、W3CContactの仕様に従って正確に機能しています。それはそれが理にかなっているという意味ではありません:)

とにかく、電話番号の新しい配列を作成し、それを実質的にcontact.phoneNumbersプロパティと等しくなるように設定すると、連絡先に電話番号が追加されます。既存の電話番号を編集/置換する場合は、「フィールド」の一部として電話番号を要求する必要があります。次に、既存の電話番号をループして、適切と思われるように編集する必要があります。

うん、それは直感に反しますが、それはあなたのためのW3CAPIです。

于 2012-10-28T23:56:10.010 に答える
1

新しいContactFieldを使用して電話番号に新しい値を再度作成するのではなく、すでに作成されている電話番号の連絡先フィールドに値を割り当てる必要があります。

これが電話番号を更新する例です。

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

次に、更新時に使用する代わりにcontact.phoneNumbers = tPhoneNumbers;、saveメソッドを直接呼び出すだけです。

于 2013-07-12T07:57:04.997 に答える