从外部页面调用phonegap API

时间:2011-10-12 18:37:52

标签: android cordova

我有一个基本的Android应用程序,可链接到一些外部网页。我已经在这些页面上放置了phonegap.js,我正试图获取GPS信息,但没有得到任何东西。基本上,应用程序设置为使用webview加载外部页面。外部页面只有来自phonegap网站的示例代码,但我没有获得任何GPS信息。如果js和html页面都在外部服务器上,我怎样才能进入phonegap API?

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

    <script type="text/javascript" charset="utf-8" src="phonegap-1.1.0.js"></script>
    <script type="text/javascript" charset="utf-8">
    // Wait for PhoneGap to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // PhoneGap is ready
    //
    function onDeviceReady() {

        navigator.geolocation.getCurrentPosition(onSuccess, onError);
    }

    // onSuccess Geolocation
    //
    function onSuccess(position) {
        var element = document.getElementById('geolocation');
        element.innerHTML = 'Latitude: '           +       position.coords.latitude              + '<br />' +
                        'Longitude: '          + position.coords.longitude             + '<br />' +
                        'Altitude: '           + position.coords.altitude              + '<br />' +
                        'Accuracy: '           + position.coords.accuracy              + '<br />' +
                        'Altitude Accuracy: '  + position.coords.altitudeAccuracy      + '<br />' +
                        'Heading: '            + position.coords.heading               + '<br />' +
                        'Speed: '              + position.coords.speed                 + '<br />' +
                        'Timestamp: '          + new Date(position.timestamp)          + '<br />';
}

// onError Callback receives a PositionError object

function onError(error) {
    alert("error");
}

    </script>
  </head>
  <body>
    <p id="geolocation">Finding my geolocation...</p>
  </body>
</html>

1 个答案:

答案 0 :(得分:0)

HTML / JS是在外部服务器上还是嵌入在应用程序中并不重要。在这两种情况下,JS代码都将在设备上的Mobile浏览器中执行。 请解释你得到的确切错误。

确保您的原生应用具有访问位置的权限:    uses-permission android:name =“android.permission.ACCESS_COARSE_LOCATION”    uses-permission android:name =“android.permission.ACCESS_FINE_LOCATION”

如果您正在尝试Android模拟器,请参阅以下Android怪癖:

Android Quirks: 除非enableHighAccuracy选项设置为true,否则Android 2.x模拟器不会返回地理定位结果。

{enableHighAccuracy:true}