contacts.find 在 Android 4 上不起作用(phonegap)

Posted

技术标签:

【中文标题】contacts.find 在 Android 4 上不起作用(phonegap)【英文标题】:contacts.find doesn't work on Android 4 (phonegap) 【发布时间】:2017-05-11 22:20:02 【问题描述】:

我正在开发一个从手机读取联系人的 android 应用程序 (phonegap),它在 android 5 及更高版本上运行良好,但在 android 4 操作系统上它无法从手机读取联系人,所以我想问如果有人在使用联系人时遇到此问题。在 phonegap 中查找。

document.addEventListener("deviceready", onDeviceReady, true); //the onDeviceReady function takes place when the app starts

function onDeviceReady() 
// find all contacts displayName, Name and phoneNumbers
var fields       = ["displayName", "name", "phoneNumbers"];
var options      = new ContactFindOptions();
options.filter   = "";
options.multiple = true;
navigator.contacts.find(fields, onSuccess, onError, options);
	var currentdate = new Date();
    var datetime = currentdate.getDate() + "-"+(currentdate.getMonth()+1) 
    + "-" + currentdate.getFullYear() + "T" + currentdate.getHours() + ":" 
    + currentdate.getMinutes() + ":" + currentdate.getSeconds();
	alert(datetime);
	

【问题讨论】:

能贴出代码sn-p吗? 刚刚发布了 【参考方案1】:

我为您创建了示例并在 android 版本 4.1.1、4.2.2、4.4.4 中进行了测试,并且运行良好。

代码是::

首先添加联系人插件 cordova plugin add cordova-plugin-contacts

然后写入index.html ::

<body>
    <h2>Contacts List</h2>
    <div id="mobile"></div>
    <div id="email"></div>

    <script src="cordova.js"></script>

    <script type="text/javascript">
        document.addEventListener("deviceready", init, false);
        function init() 
            navigator.contacts.find([navigator.contacts.fieldType.displayName],gotContacts,errorHandler);
        

        function errorHandler(e) 
            console.log("errorHandler: "+e);
        

        function gotContacts(c) 
            console.log("gotContacts, number of results "+c.length);

            mobileDiv = document.querySelector("#mobile");
            emailDiv = document.querySelector("#email");

            /* Retriving phoneNumbers */
            for(var i=0, len=c.length; i<len; i++) 
                if(c[i].phoneNumbers && c[i].phoneNumbers.length > 0) 
                    mobileDiv.innerHTML += "<p>"+c[i].displayName+"<br/>"+c[i].phoneNumbers[0].value+"</p>";
                
            

            /* Retriving Email */
            for(var i=0, len=c.length; i<len; i++) 
                if(c[i].emails && c[i].emails.length > 0) 
                    emailDiv.innerHTML += "<p>"+c[i].emails[0].value+"</p>";
                
            
        
    </script>
</body>

【讨论】:

好吧,让我试试你的比较一下 我注意到 document.addEventListener("deviceready", init, false); 中的 useCapture设置为 false 有什么特殊原因吗?

以上是关于contacts.find 在 Android 4 上不起作用(phonegap)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用node js,reactjs,express从实际网页中的mongodb中获取数据

如何在Linux系统上安装Android 4.4

skia项目运行在Android.4.2,Android 4.2和Android 2.2有区别吗?

如何在Linux系统上安装Android 4.4

Android 4.0.4 未显示在我的 Android SDK 管理器中

无法在 Android 4.4.4 上获得分配