2012-06-05 3 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

Я добираюсь до предупреждения ('code: 3'), но ondevicereadymethod не вызван. Я не знаю, чего не хватает. Пожалуйста, помогите мне на том же. – Prem

+0

Вы попробовали пример приложения для Android, поставляемого с cordova 1.7? – dhaval

+0

привет пользователь623517, я пробовал пример, и он работал очень хорошо. почему вы не пытаетесь использовать другое устройство, а затем обновляете нас по адресу prooblem – 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> 

Также проверьте Android example folder в 1.7 скачать Кордова.

+0

Я пропустил этот метод ... function onLoad() {document.addEventListener ("deviceready", onDeviceReady, false); } ... поэтому метод OnDeviceReady не вызывался. Я пропустил это. В любом случае спасибо. – Prem

+1

Ссылка не работает Пожалуйста, исправьте ее. –

0

Для всех, кто по-прежнему находится в поиске решения - проверьте альтернативные файлы .js, импортированные в ваш index.html, например, index.js может иметь свой собственный готовый вызов и функцию устройства, поэтому блокирует ваш пользовательский.

0

У меня есть решение для моего! Это действительно простая проблема с знакомством.

Обычно мы разрабатываем один проект cordova (phonegap), а затем копируем все связанные файлы (/ www) в другой. , но я понял, что файл Cordova (кордова-2.2.0 сейчас) отличается между платформами.

Не копируйте даже файл cordova. Используйте оригинальный пример один на платформе.

не уверен в каждом случае. это полезно? :)

Смежные вопросы