0

我有以下代码:

<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 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”失败了。

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

我想知道出了什么问题?

4

3 回答 3

5

我也有这个问题。我找到了解决它的方法。

请将 'option' 参数添加到 navigator.contacts.find 方法。

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

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

于 2013-01-08T05:55:49.203 回答
3

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

第一个问题是:

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

它应该是:

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

第二个问题是使用cordova 2.2.0。出于某种原因,使用cordova 2.1.0 有效。也许这是在 PhoneGap 构建中的设置中。

于 2012-12-18T23:04:12.923 回答
0

如果你没有创建 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>

您不需要在物理上在硬盘上拥有 cordova-2.2.0.js 文件。只要你用这样的标签引用它:

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

在这方面一切都很好。

于 2012-12-18T00:51:42.200 回答