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

时间:2012-12-17 22:09:03

标签: 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>

我的PhoneGap已设置为2.2.0版。代码位于zip文件中,只有:

的index.html 应用程序/ LIB / jquery.min.js

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

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

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

看起来方法“navigator.contacts.find”失败了。

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

我想知道出了什么问题?

3 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:3)

我发现了这个问题。有两个问题。

第一个问题是:

navigator.contacts.find("*", function(contacts) { ...

它应该是:

navigator.contacts.find(["*"], function(contacts) { ...

第二个问题是使用cordova 2.2.0。出于某种原因,使用cordova 2.1.0可以正常工作。也许这是在PhoneGap构建中的设置中。

答案 2 :(得分:0)

如果您在dident创建config.xml文件时,当您在真实手机上安装它时它将无法工作:)

如果您想使用来自phonegap的手机功能,您需要授予对它们的访问权限。

创建一个config.xml文件并添加以下行:

<feature name="http://api.phonegap.com/1.0/contacts"/>



Here is an example of the config file. Also read: 

https://build.phonegap.com/docs/config-xml

<?xml version="1.0" encoding="UTF-8" ?>
<widget xmlns = "http://www.w3.org/ns/widgets"
    xmlns:gap = "http://phonegap.com/ns/1.0"
    id        = "com.phonegap.example"
    versionCode="10" 
    version   = "1.0.0">


<name>PhoneGap Example</name>

<description>
    An example for phonegap build docs. 
</description>

<author href="https://build.phonegap.com" email="support@phonegap.com">
    Hardeep Shoker 
</author>


<feature name="http://api.phonegap.com/1.0/contacts"/>

</widget>

您不需要在HDD上使用cordova-2.2.0.js文件。只要你用这样的标签来引用它:

<script type="text/javascript" src="cordova-2.2.0.js"></script>

在这方面一切都很好。