Cordova 插件 Geolocation 不适用于 Android 版本 Kitkat

Posted

技术标签:

【中文标题】Cordova 插件 Geolocation 不适用于 Android 版本 Kitkat【英文标题】:Cordova plugin Geolocation is not working for Android version Kitkat 【发布时间】:2015-07-06 12:14:59 【问题描述】:

我使用了 cordova 插件地理定位: https://github.com/apache/cordova-plugin-geolocation

通过命令安装cordova的插件: cordova 插件添加 org.apache.cordova.geolocation

它在关闭位置的 android 版本 Jelly Bean(Samsung Galaxy Tab 2 版本 4.1.2 Jelly Bean、Samsung Galaxy Grand 2 版本 4.1.2 Jelly Bean)中运行良好,但在 Android 版本 Kitkat(Samsung Note 2版本 4.4.2 Kitkat)。

 navigator.geolocation.getCurrentPosition(geolocationSuccess, geolocationError);
       function geolocationSuccess(position) 
           var latlng = "Latitude :" + position.coords.latitude + ", Longitude :" + position.coords.longitude);
           $ionicPopup.alert(
               title: "User Current Location",
               subTitle: "Location",
               template: latlng
           );
       

       function geolocationError(error) 
           $ionicPopup.alert(
                   title: "Pajhwok Location",
                   subTitle: "Error",
                   template: JSON.stringify(error)
           );
       

【问题讨论】:

template: JSON.stringify(error) 想将该错误打印到控制台/复制并粘贴到这里?调试控制台中出现的任何其他问题(因为您使用的是 kitkat,所以您可以使用 chrome 开发工具!) cordova 地理定位插件不再包含本机代码,所以如果它不起作用是 webview 的错,你无能为力 Cordova Geolocation 插件在 android 手机上打开位置的情况下工作正常。如果位置关闭,则在选项中设置超时后错误也会起作用 【参考方案1】:

正如@laughingpine 所说,准确了解您遇到的问题会有所帮助。

您说“它在关闭位置的 Android 版本 Jelly Bean(Samsung Galaxy Tab 2 版本 4.1.2 Jelly Bean、Samsung Galaxy Grand 2 版本 4.1.2 Jelly Bean)中运行良好,但在 Android 版本 Kitkat(三星 Note 2 版本 4.4.2 Kitkat)。”

您的意思是在 Android 4.4.2 上,当位置关闭时错误回调没有被执行?或者当位置服务开启时,错误回调正在执行而不是成功回调?如果是这样,请给我们错误输出。

如果是后者,你可以尝试显式设置 maxAge 和 timeout,例如

navigator.geolocation.getCurrentPosition(geolocationSuccess, geolocationError, maxAge: 30000, timeout: 60000);

【讨论】:

感谢您的回复。如果在 KitKat 移动设备上关闭位置,则不会执行错误和成功(仅在位置打开的情况下才有效)。但是在果冻豆上,它在位置关闭/打开的情况下工作.. 嘿@SubhashKumar,你解决了你的问题吗?我遇到了同样的问题。它正在其他 android 版本上工作,如 android 5+,但它在 kitkat 中给出超时错误。 嗨@seyidyagmur,不,但我刚刚为应用程序添加了“需要位置权限”,它在除 KitKat 之外的所有版本中都能正常工作。如果用户在运行应用程序之前/期间设置位置/GPS - 关闭,那么我不会提供需要位置的选项/功能。

以上是关于Cordova 插件 Geolocation 不适用于 Android 版本 Kitkat的主要内容,如果未能解决你的问题,请参考以下文章

如何在离线模式下使用 Cordova Geolocation 插件

cordova百度地图定位Android版插件

如何使用 Cordova Geolocation 插件在 Ionic App 中添加标记

Cordova 插件不适用于 ionic

Cordova 地理定位无法在 Android 上运行

Cordova Background Fetcher 插件不适用于 iOS