次のコードがあります。
<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」が失敗したようです。
最初はこれは権限の問題だと思いましたが、アプリをインストールすると、電話からの連絡先の読み取りを含む「あなたの個人情報」を求めるアプリを見ることができました。
何がうまくいかなかったのだろうか?