【问题标题】:Phonegap Contacts API - field namesPhonegap 联系人 API - 字段名称
【发布时间】:2012-05-22 22:17:15
【问题描述】:

为什么这么难?我想要的只是 Phonegap 联系人 API 中的字段名称列表。您会认为这没什么大不了的,但实际上,这几乎是 Phonegap 文档的一个普遍问题:没有方法采用的参数的详细信息。这些例子并不详尽,这让用户不得不去别处寻找。

所以我去了http://www.w3.org/TR/2010/WD-contacts-api-20100121/#widl-ContactProperties-name,看到标准字段是姓名、昵称、电话、电子邮件和地址。嗯!让我们看看这是否有效:

var fieldArray = new Array('name','displayName','phoneNumbers','addresses','emails');

对于 (i=0;i

for(j = 0; j

alert("Field Name: "+fieldArray[j]+"\n Data: "+contacts[i].name[0]+"\n Data: "+contacts[i].displayName);

alert("\n Name:  "+contacts[i].name[0]);    

}

}

没有机会。特别是,第二个警报 - contacts[i].name[0] - 是我最感兴趣的一个。它只是返回“未定义”。试过这个:contacts[i].name[0].value。纳达。

所以问题:联系人列表中的字段名称是什么,Phonegap 中有联系人的人可以要求他们对他们文档的糟糕状态做点什么。我愿意做志愿者,但我没有必要的 Phonegap 知识来完成这项工作。

【问题讨论】:

    标签: cordova contacts field


    【解决方案1】:

    应用程序是这样的:出于性能原因,我想将我的所有联系方式都放在 SQLite 数据库中,并允许我更轻松地操作数据。因此,我提取了所有联系人:

    var options = new ContactFindOptions();
    
    options.filter=""; // Note empty filter will pick up all contacts
    
    options.multiple = true;
    
    var fields = ["*"]; // Picks up all fields
    
    navigator.contacts.find(fields, findSuccess, onError, options);
    

    然后,我将其全部粘贴到具有选定字段名称的数据库中:displayNmae、phoneNumbers、addresses、emails。尽管遍历所有字段并将大量内容粘贴到数据库中,但我真正想做的是在数据库中使用这样的例程findSuccess 回调函数:

    var contactsArray=new Array();
    var contactFieldsArray = new Array('displayName','firstName','lastName' ...);
    for(var i = 0; i < contacts.length;i++){
       for(var j = 0; j < contactFieldsArray.length; j++){
          if(contactFieldsArray[j].match(/(phoneNumbers)|(emails)/i){
             contactsArray,push(contacts[i].contactFieldsArray[j][0].value);
          }else{
              contactsArray.push(contacts[i].contactFieldsArray[j]);      
          }
       }
    }
    

    不幸的是,这需要一些可用字段的 id。它一定比看起来更容易。

    【讨论】:

      【解决方案2】:

      首先,您正在查看 W3C 联系人规范的旧版本。你会想看看这个:

      http://www.w3.org/TR/contacts-api/

      关于您关于联系人中哪些字段名称的问题,它们列在docs under the Contact object 中。如果您想创建联系人,请不要使用“new Contact()”,而是使用navigator.contacts.create()。基本上,您将对象文字传递给该方法,它会从您的对象中提取匹配的属性并填充联系人。

      我不确定您在示例中如何处理联系人数组,但如果您使用 navigator.contacts.find(),则需要指定 find 返回哪个 contact fields。这是根据 W3C 规范,我不完全同意,但我们尝试按照规范编写代码。

      希望回答您的问题,如果它不只是 ping 我,我会尽力回答。

      【讨论】:

      • 嘿,谢谢西蒙。该应用程序是这样的:出于性能原因,我想将我所有的联系方式都放在一个 SQLite 数据库中,并允许我更轻松地操作数据。因此,我提取了所有联系人:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 2012-02-05
      • 2017-01-27
      • 2022-10-05
      • 2012-08-10
      • 2013-12-22
      • 1970-01-01
      相关资源
      最近更新 更多