我正在开发我的第一个应用程序在phonegap(android)。
<!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" />
答案 0 :(得分: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。
答案 1 :(得分:0)
对于仍然在寻找解决方案时遇到问题的每个人 - 请检查导入到index.html中的替代.js文件,例如index.js可能有自己的设备就绪调用和函数,因此会阻止您的自定义调用。 / p>
答案 2 :(得分:0)
我得到了一个解决方案!! 这是熟人的一个非常简单的问题。
我们通常开发一个cordova(phonegap)项目,然后将所有相关文件(/ www)复制到另一个。 但我意识到Cordova文件(现在的cordova-2.2.0)在平台之间是不同的。
请勿复制cordova文件。 在平台上使用原始示例。
对每个案例都不确定。这有用吗? :)