在ngCordova Contacts插件中获取所有联系人至少一个电话号码

时间:2015-07-24 06:48:51

标签: android angularjs cordova ionic-framework ngcordova

我正在使用ngcordova contacts plugin来检索应用中的联系人。我想知道是否有可能只获得至少有一个电话号码的联系人。

我使用以下代码,它返回我的谷歌联系人,其中包含电子邮件但不包含电话号码。但我只想要可用的电话号码而不是电子邮件。 这可能吗 ?或任何其他可用于获得此结果的选项。

  Dictionary<long, List<object>> requestObject = new Dictionary<long, List<object>>();
        List<object> listrequestObjects = new List<object>();

            Request requestOb = new Request();
            requestOb.order_id = 2372;
            requestOb.action = "REQUEST_LABELS";
            listrequestObjects.Add(requestOb);
            requestObject.Add(2352635, listrequestObjects);
            string requesttest = JsonConvert.SerializeObject(requestObject);

2 个答案:

答案 0 :(得分:2)

我建议使用http://underscorejs.org/来过滤联系人结果。这样的事情应该适合你的需求:

$scope.getContactList = function() {
     $ionicLoading.show({
        template: 'Loading...'
    });
    var options = {};
    options.multiple = true;
    options.hasPhoneNumber = true;
    options.fields = ['name.formatted', 'phoneNumbers'];
    $cordovaContacts.find(options).then(function(result) {
        $scope.contacts = result;

        var contactsWithAtLeastOnePhoneNumber = _.filter(result, function(contact){
            return contact.phoneNumbers.length > 0
        });

        //
        // Contacts with at least one phone number...
        console.log(contactsWithAtLeastOnePhoneNumber);

        $ionicLoading.hide();

    }, function(error) {
        console.log("ERROR: " + error);
    });
}

由于phoneNumbers数组可以返回并且为空,因此这种快速方法可确保至少存在一个条目。

答案 1 :(得分:2)

我在没有使用任何外部js的情况下得到了解决方案,代码如下所示:

$scope.getContactList = function() {
      $scope.contacts = [];
             $ionicLoading.show({
                template: 'Loading...'
            });
            var options = {};
            options.multiple = true;
            $cordovaContacts.find(options).then(function(result) {
                 for (var i = 0; i < result.length; i++) {
                    var contact = result[i];
                     if(contact.phoneNumbers != null)
                       $scope.contacts.push(contact);
                  }
                $ionicLoading.hide();
            }, function(error) {
                console.log("ERROR: " + error);
            });
    }