来自PhoneGap/Cordova的联系人api设备上的JSON错误,但适用于Ripple

Chi*_*han 0 cordova

我有以下代码:

<html>
<head>
    <title>Contact test</title>
    <script type="text/javascript" src="cordova-2.2.0.js"></script>
    <script type="text/javascript" src="app/lib/jquery.min.js"></script>
</head>
<body>
    <script type="text/javascript" charset="utf-8">


        alert('Add Listener');
        document.addEventListener("deviceready", onDeviceReady, false);


        function onDeviceReady() {
            alert('Device is ready');
            navigator.contacts.find("*", function(contacts) {
                for (var i = 0; i < contacts.length; i++) {
                    $('body').append('<div>' + contacts[i].displayName + '</div>');
                }
            }, function(error) {
                alert('Contacts.find failed: ' + error);
            });
        }
    </script>


</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的PhoneGap设置为2.2.0版.代码是一个zip文件,只有:

index.html app/lib/jquery.min.js

没有cordova-2.2.0.js,没有config.xml.

当我在Ripple中测试时,它会按预期给出一个联系人列表.

当我在手机上部署应用程序(三星Galaxy Nexus,运行Jelly Bean)时,它会给我一个警告窗口,上面写着"Contacts.find failed:JSON error".

看起来方法"navigator.contacts.find"失败了.

起初我认为这是一个权限问题,但是当我安装应用程序时,我能够看到该应用程序要求"您的个人信息",其中包含来自手机的阅读联系人.

我想知道出了什么问题?

Sam*_*Sam 5

我也有这个问题.我找到了一个解决方案来解决它.

请在navigator.contacts.find方法中添加'option'参数.

http://docs.phonegap.com/en/2.3.0/cordova_contacts_contacts.md.html#contacts.find

添加参数后,它可以正常工作.