Вопрос по android – PhoneGap - метод OnDeviceReady не вызывается

2

Я разрабатываю свое первое приложение в PhoneGap (Android).

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.

Я получаю до оповещения (код: 3), но метод ondeviceready не вызывается. Я не знаю, чего мне не хватает. Пожалуйста, помогите мне в том же. Prem
Привет user623517, я попробовал твой пример, и он работал очень хорошо. Почему бы вам не попробовать на другом устройстве, а затем обновить нас о проблеме Neji
Вы пробовали пример приложения для Android поставляется с Cordova 1,7? dhaval
Привет NejiHyunga ... Какое устройство вы используете? Я пробовал samsung galaxy Ace и Google nexux ics, но метод ondeviceready не вызывается. Prem
Проблема не связана с устройством Prem

Ваш Ответ

3   ответа
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 в кордове 1.7 скачать.

Error: User Rate Limit Exceeded Prem
Error: User Rate Limit Exceeded
0

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

0

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

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

Do not copy even cordova file. Use original example one on the platform.

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

Похожие вопросы