【问题标题】:PhoneGap-Contacts not loadingPhoneGap-联系人未加载
【发布时间】:2013-12-11 06:06:27
【问题描述】:

我因无法获得所有联系人而陷入困境。这是我的代码

<!DOCTYPE html>
<html>
<head>
    <title>Contact Example</title>
    <script type="text/javascript" charset="utf-8" src="cordova-2.9.0.js"></script>
    <!-- jQuery and jQuery Mobile -->
    <script src="jquery-1.9.1.min.js"></script>
    <script src="jquery.mobile-1.3.1.min.js"></script>

    <script type="text/javascript" charset="utf-8">

        document.addEventListener("deviceready", getContactList, false);

        function getContactList() { 
            var contactList = new ContactFindOptions(); 
            contactList.filter=""; 
            contactList.multiple=true;
            var fields = ["*"];  //"*" will return all contact fields
            navigator.contacts.find(fields,  getContactFields, contactList );
        }

        function getContactFields(contacts) {
            for (var i=0; i<contacts.length; i++)
            {
               alert(contacts.length);
               alert("Name:" + contacts[i].displayName + "\n"+
                         "Birthday:"+ contacts[i].birthday)

                for (var j=0; j<contacts[i].phoneNumbers.length; j++) {
                    alert("Type: " + contacts[i].phoneNumbers[j].type + "\n" + 
                        "Value: "  + contacts[i].phoneNumbers[j].value );
                } 
         }  

         alert("loaded");
    }
    </script>

请帮助我哪里出错了。

【问题讨论】:

    标签: android cordova contacts


    【解决方案1】:

    终于解决了我的问题。如果有人需要列出他的电话号码列表,那么此代码将是有益的。下面是源代码。

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <title></title>
    
    <link rel="stylesheet" href="jquery.mobile-1.3.1.min.css"> 
    <!-- jQuery and jQuery Mobile -->
    <script src="jquery-1.9.1.min.js"></script>
    <script src="jquery.mobile-1.3.1.min.js"></script> 
    
    <!-- for codova plugins --> 
    <script type="text/javascript" charset="utf-8" src="cordova-2.9.0.js">  </script>     
    
    <script type="text/javascript" charset="utf-8">
    
        document.addEventListener("deviceready", onDeviceReady, false); 
        function onDeviceReady() {
            var options = new ContactFindOptions();
            options.filter = "";           
            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++) 
            {  
                if (contacts[i].phoneNumbers)
                {
                    for (var j=0; j<contacts[i].phoneNumbers.length; j++) 
                    {  
                        $('#contactlist').append(
                        '<li>' + 
                            '<a href="tel:'+ contacts[i].phoneNumbers[j].value +'">' +
    
                                '<h4>'+ contacts[i].displayName +'</h4>' + 
                                '<h4>'+ contacts[i].phoneNumbers[j].value +'</h4>' + 
                            '</a>' +
                        '</li>'); 
                    } 
                }   
            }
            $('#contactlist').listview('refresh');
        }
    
        function onError(contactError) {
            alert('Error in getting Phone Contacts');
        }
    
     </script>
    
    </head>
    <body> 
      <div id="contactListPage" data-role="page" >
    
    <div data-role="header" data-position="fixed">
        <h1>Contacts</h1>
    </div>
    
    <div data-role="content">
         <ul id="contactlist" data-role="listview" data-filter="true"></ul>
    </div>      
    
    </div> 
     </body>
    </html>
    

    【讨论】:

      【解决方案2】:

      试试这个-

      document.addEventListener("deviceready", onDeviceReady, false);
      // Cordova is ready
      function onDeviceReady() {
          var options = new ContactFindOptions();
          options.filter = "";          // empty search string returns all contacts
          options.multiple = true;      // return multiple results
          var fields = ["displayName", "name"]; // Optional If you want particular fields then use filters 
          navigator.contacts.find(fields, onSuccess, onError, options);
      }
      
      function onSuccess(contacts) {
      
          alert(contacts.length);
          for (var i = 0; i < contacts.length; i++) {
          }
      }
      
      function onError(contactError) {
          alert('Error in getting Phone Contacts');
      }
      

      关注Link

      【讨论】:

      • @Imdad Sarkar- 如果您想要包含生日的联系人或包含其他字段的联系人,您可以对其进行排序并使用过滤器仅显示这些联系人。
      • 我以前使用过该代码。我不知道我在哪里犯了错误。
      • 您的手机中有多少联系人以及使用此代码获得多少联系人? (警觉中)
      • 我的 onSuccess(contacts) 没有被调用。
      • 我的手机里只有一个联系人,我注意到我的 onSuccess 方法没有执行。
      猜你喜欢
      • 2012-08-10
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      相关资源
      最近更新 更多