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 でテストすると、期待どおりに連絡先のリストが表示されます。

携帯電話 (Jelly Bean を実行している Samsung Galaxy Nexus) にアプリを展開すると、「Contacts.find failed: JSON error」という警告ウィンドウが表示されます。

メソッド「navigator.contacts.find」が失敗したようです。

最初はこれは権限の問題だと思いましたが、アプリをインストールすると、電話からの連絡先の読み取りを含む「あなたの個人情報」を求めるアプリを見ることができました。

何がうまくいかなかったのだろうか?

4

3 に答える 3

5

私もこの問題を抱えていました。それを解決する解決策を見つけました。

navigator.contacts.find メソッドに「option」パラメータを追加してください。

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

パラメータを追加すると、機能します。

于 2013-01-08T05:55:49.203 に答える
3

問題が見つかりました。2 つの問題があります。

最初の問題は次のとおりです。

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

そのはず:

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

2 番目の問題は、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>

物理的にHDDにcordova-2.2.0.jsファイルを保存する必要はありません。次のようなタグで参照している限り、次のようになります。

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

その面ではすべてが順調です。

于 2012-12-18T00:51:42.200 に答える