2012-12-17 31 views
0

我有以下代碼:JSON錯誤,但在工作紋波

<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

沒有科爾多瓦,2.2.0.js,沒有config.xml文件。

當我在紋波測試,它給我的聯繫人列表預期。

當我部署我的手機(三星Galaxy Nexus的,運行果凍豆)上的應用程序,它給了我一個警告窗口說:「Contacts.find失敗:JSON錯誤」。

它看起來像法「navigator.contacts.find」失敗。

起初我以爲這是一個權限問題,但是當我安裝的應用程序,我能看到的應用要求,其包含了從手機閱讀接觸「您的個人信息」。

我想知道出了什麼問題?

回答

3

我發現了這個問題。有兩個問題。

第一個問題是:

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

它應該是:

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

的第二個問題是使用科爾多瓦2.2.0。出於某種原因,使用cordova 2.1.0的作品。也許這是在PhoneGap內部的設置中。

+0

我確認這是2.2.0的問題。我降級到2.1.0,一切都很好。 –

0

如果您dident創建config.xml文件時ü安裝了你的真實電話:)

如果你想與PhoneGap的手機具體functionalites您需要授予他們訪問它的工作不會工作。

Createa 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="[email protected]"> 
    Hardeep Shoker 
</author> 


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

</widget> 

你不需要psysically對你的硬盤的科爾多瓦 - 2.2.0.js文件。只要你用這樣的標籤來引用它:

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

在這方面一切都很好。

+0

試試我的建議,我希望它可以幫助:) – Daniel

+0

謝謝丹尼爾,但那不是問題。現在我看到,當我安裝應用程序時,它只需要聯繫信息,但當我運行應用程序時,我收到了完全相同的錯誤。我相信您在PhoneGap的「設置」下執行的配置會自動爲您創建config.xml文件,這就是爲什麼它可以被省略。 –