2012-06-05 146 views
2

我正在開發我的第一個應用程序在phonegap(android)。PhoneGap - OnDeviceReady方法沒有被調用

的index.html

<!DOCTYPE html> 
    <html> 
     <head> 
     <title>Device Properties Example</title> 

     <script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script> 
     <script type="text/javascript" charset="utf-8"> 
     alert('code: 1'); 
     // Wait for Cordova to load 
     // 
     document.addEventListener("deviceready", onDeviceReady, false); 
     alert('code: 2'); 
     var watchID = null; 
     alert('code: 3'); 
     // Cordova is ready 
     // 
     function onDeviceReady() { 
      // Update every 3 seconds 
      alert('code: 4'); 
      var options = { frequency: 3000 }; 
      watchID = navigator.geolocation.watchPosition(onSuccess, onError, options); 
     } 

     // onSuccess Geolocation 
     // 
     function onSuccess(position) { 
      alert('code: 5'); 
      var element = document.getElementById('geolocation'); 
      element.innerHTML = 'Latitude: ' + position.coords.latitude  + '<br />' + 
           'Longitude: ' + position.coords.longitude  + '<br />' + 
           '<hr />'  + element.innerHTML; 
     } 

     // clear the watch that was started earlier 
     // 
     function clearWatch() { 
      alert('code: 6'); 
      if (watchID != null) { 
       navigator.geolocation.clearWatch(watchID); 
       watchID = null; 
      } 
     } 

     // onError Callback receives a PositionError object 
     // 
     function onError(error) { 
      alert('code: ' + error.code + '\n' + 
       'message: ' + error.message + '\n'); 
     } 

     </script> 
     </head> 
     <body> 
     <p id="geolocation">Watching geolocation...</p> 
     <button onclick="clearWatch();">Clear Watch</button>  
     </body> 
    </html> 

這裏onDeviceReady方法不獲取調用。請幫助我瞭解我錯過了什麼。

我已經添加了這些權限

<uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

在manifest.xml文件。

+0

我越來越警覺('代碼:3'),但ondevicereadymethod沒有被調用。我不知道我錯過了什麼。請幫助我一樣。 – Prem

+0

你有沒有嘗試過的例子android應用程序自帶cordova 1.7? – dhaval

+0

嗨user623517,我試過你的例子,它工作得很好。你爲什麼不嘗試在另一臺設備上,然後更新我們自己的產品 – Neji

回答

4

按照這種方式,它應該工作。

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Cordova Device Ready Example</title> 

    <script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script> 
    <script type="text/javascript" charset="utf-8"> 

    // Call onDeviceReady when Cordova is loaded. 
    // 
    // At this point, the document has loaded but cordova-1.7.0.js has not. 
    // When Cordova is loaded and talking with the native device, 
    // it will call the event `deviceready`. 
    // 
    function onLoad() { 
     document.addEventListener("deviceready", onDeviceReady, false); 
    } 

    // Cordova is loaded and it is now safe to make calls Cordova methods 
    // 
    function onDeviceReady() { 
     // Now safe to use the Cordova API 
    } 

    </script> 
    </head> 
    <body onload="onLoad()"> 
    </body> 
</html> 

另外檢查在Cordova 1.7下載中的Android example folder

+0

我錯過了這個方法... function onLoad(){document.addEventListener(「deviceready」,onDeviceReady,false); } ...所以,OnDeviceReady方法沒有被調用。我錯過了這一點。不管怎麼說,多謝拉。 – Prem

+1

鏈接被破壞請修復它。 –

0

大家誰仍然是麻煩找解決方法 - 檢查導入到您的index.html替代.js文件,例如index.js可能有它自己的設備準備呼叫和功能,從而阻止您的自定義一個。

0

我得到了一個解決方案,我一個! 這對熟人來說確實很簡單。

我們平時開發一個科爾多瓦(PhoneGap的)項目,然後將所有相關的文件(/ WWW)複製到另一個。 但我意識到Cordova文件(cordova-2.2.0現在)在不同平臺之間是不同的。

不要複製甚至科爾多瓦文件。 在平臺上使用原始示例。

不知道每一個案件。這有幫助嗎? :)

相關問題