2013-02-12 5 views
9

Gibt es eine Möglichkeit, nur Kontakte mit Telefonnummer anzuzeigen?PhoneGap - nur Kontakte mit Telefonnummern anzeigen

Im Moment bekomme ich alle Kontakte und dann Schleifen durch jede und ihre Telefonnummer herauszufinden, aber ich frage mich, ob es eine Möglichkeit gibt, einen Parameter an contactFindOptions Objekt übergeben, so dass es nur Kontakte, die Telefonnummer hat ? Diese

ist wie zur Zeit mein Code wie folgt aussieht:

var options = new ContactFindOptions(); 
options.filter=""; //Can i pass something here to pick only contacts with phone number 
options.multiple=true; 
var fields = ["displayName", "phoneNumbers"]; 
navigator.contacts.find(fields, onSuccess, onError, options); 


function onSuccess(contacts) { 
    for (var i=0; i<contacts.length; i++) { 
     console.log("Display Name = " + contacts[i].displayName); 
     if(null != contacts[i].phoneNumbers) 
      { 
       for(var j=0;j<contacts[i].phoneNumbers.length;j++) 
       { 
         console.log("Name = " + contacts[i].displayName); 
         console.log("Phone = " + contacts[i].phoneNumber[j].value); 

       } 
      } 
    } 
} 

Antwort

0

Ich glaube, Cordova API nicht Filterung erlaubt zu erreichen, was Sie benötigen.

Aus ihrer Dokumentation hier: http://docs.phonegap.com/en/2.5.0/cordova_contacts_contacts.md.html#contacts.find

Dort heißt es:

Die contactFindOptions.filter String kann als Suchfilter verwendet werden, wenn die Kontaktdatenbank abfragen. Falls angegeben, wird eine Übereinstimmung zwischen Groß- und Kleinschreibung und Teilwert auf jedes im Parameter contactFields angegebene Feld angewendet. Wenn eine Übereinstimmung in einem Vergleich mit einem der angegebenen Felder gefunden wird, wird der Kontakt zurückgegeben.

Ich glaube nicht, dass Sie dies verwenden können, um eine nicht Null für das Telefonnummer Feld zu bestimmen.

2

ja, wir können verwenden hasPhoneNumber Filteroption. -Code-Schnipsel ist wie folgt:

  var contactFindOptions = new ContactFindOptions(); 
      contactFindOptions.filter = ""; 
      contactFindOptions.multiple = true; 
      contactFindOptions.hasPhoneNumber = true; 
      navigator.contacts.find(
        ["phoneNumbers"], 
        function (contacts) { 
         // you will get contacts in this callback success function 
        }, 
        function (e) { 
         if (e.code === ContactError.NOT_SUPPORTED_ERROR) { 
          console.log("Searching for contacts is not supported."); 
         } else { 
          console.log("Search failed: error " + e.code); 
         } 
        }, 
        contactFindOptions); 

Hinweis: hasPhoneNumber (nur Android): Filtert die Suche auf nur Kontakte zurückzukehren mit einer Telefonnummer informiert. (Boolean) (Standard: false)