繁体   English   中英

仅限Android 4.0设备上的Phonegap getCurrentPosition超时

[英]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的选项,包括maximumAgetimeoutenableHighAccuracy 我尝试了各种各样的选择; 从合理的超时/年龄,低超时/年龄到高超时/年龄。 我试过在所有排列中打开( 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM