[英]Phonegap getCurrentPosition timeout on Android 4.0 devices only
我开发了一款现已在Google Play商店上线的应用。 该应用程序使用getCurrentPosition
方法获取用户的当前位置。
我已经在一些设备上进行了测试,代码运行良好。 这些设备是Nexus 4,Nexus 5,三星Galaxy S3和S4。 完善。
我现在发现Android设备上的应用程序问题低于4.1(即4.0.4,这似乎是除了上面提到的最常用的版本)。
该应用程序不断返回超时错误。 我知道位置服务已在设备上打开。
我修改了getCurrentPosition
的选项,包括maximumAge
, timeout
和enableHighAccuracy
。 我尝试了各种各样的选择; 从合理的超时/年龄,低超时/年龄到高超时/年龄。 我试过在所有排列中打开( true
)和关闭( false
)的enableHighAccuracy
。 正在考虑超时(例如,在达到超时之前没有命中错误回调)。
StackOverflow上有一些类似的线程,但没有一个符合我的问题。 我尝试关闭设备,删除并重新添加应用程序,并重新编译了几次。 同样的问题。
正在测试的设备是HTC Sensation,但我也尝试过HTC Wildfire,并且有类似的bug报告来自用户外面 - 都是一样的。
下面是示例代码,但就像我说的,我已经尝试了各种选项(超过超时,超过年龄的超时,两种情况下的高精度开启和关闭等)。
if (navigator.geolocation) navigator.geolocation.getCurrentPosition(function(pos) {
console.log('Working...');
}, function(error, msg) {
console.log(error.code + ' - '+ error.message);
},
{ maximumAge: 90000, timeout: 9000, enableHighAccuracy: false });
LogCat吐出: 3 - Position retrieval timed out. at file:///[...]
3 - Position retrieval timed out. at file:///[...]
更新 :更改为watchPosition
无效,设备仍无法找到该位置。
这是设备的问题,而不是Android(可能)或Phonegap(当然)的问题。 基于位置的服务无法在默认的Android浏览器上运行,也无法使用本机浏览器(地图应用程序可以正常工作)。
我通过关闭位置服务,重新启动设备并重新启动所有位置服务,强制重新接受条款/证书等来在设备上修复此问题。 定位服务随后涌入生活,浏览器找到了我的位置,应用程序正常工作。
发现有几个人在网上抱怨这个,我在不止一个运行相同Android版本的设备上体验过它。
对我来说,geolocation插件由于某种原因没有成功安装。 运行cordova plugins list
以确保cordova-plugin-geolocation存在。 如果没有,运行cordova plugins add cordova-plugin-geolocation
。 有时删除和重新添加插件或整个平台也会修复错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.