Android平台无法调用geolocation插件

Posted

技术标签:

【中文标题】Android平台无法调用geolocation插件【英文标题】:Can not call geolocation plugin in Android platform 【发布时间】:2015-04-17 11:23:37 【问题描述】:

我们使用Worklight 6.2 或MobileFirst Foundation 7.0 想使用navigator.geolocation.getCurrentPosition 来获取GPS 位置,但是没有任何响应也没有错误,有谁知道为什么?

它适用于旧版本。

【问题讨论】:

提供一个演示应用程序,如果这对您来说失败了,请记住您必须在 androidManifest.xml 中添加这些权限:android.permission.ACCESS_FINE_LOCATION" 和 android.permission.ACCESS_COARSE_LOCATION"。 Idan,它在 Q 的标题中 :) 对,我看到了然后忘了我看到了... 【参考方案1】:

如果你没有成功也没有失败,并且由于你没有提供你的实现,我认为你没有正确实现它。

我在 MFPF 7.0 的 Android Emulator 中测试了以下内容,并且成功了:

common\main.js:

function wlCommonInit()
    var options = 
            enableHighAccuracy: true,
            timeout: 5000,
            maximumAge: 0
    ;

    navigator.geolocation.getCurrentPosition(success, error, options);


function success(pos) 
     var crd = pos.coords;
      alert('Your current position is:' + crd.latitude + " " + crd.longitude + " " + crd.accuracy);


function error(err) 
      alert('ERROR(' + err.code + '): ' + err.message);

当然也在AndroidManifest.xml中添加了以下两个权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

如果您还在模拟器中进行测试并获得超时,请增加超时值或在 Eclipse 的 DDMS 视图中强制更改位置:https://***.com/a/23152773/1530814

【讨论】:

嗨,伊丹,非常感谢。是的,我忘记将权限添加到配置文件。新的Cordova文档很差,丢失了重要的配置指导。 另一个 cmets,为什么我在 Android Project lib 目录的 cordova.jar 文件中找不到任何 geolocaiton 类?

以上是关于Android平台无法调用geolocation插件的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap/Cordova Geolocation 不适用于 Android 4.0+,但适用于所有其他平台

无法使用 HTML5 Geolocation 和 Android 获取不同用户的位置

React-Native Geolocation 在 Android 上无法按预期工作

如果没有GPS,则无法使用navigator.geolocation进行反应原生的当前位置

用户拒绝激活位置时无法获取 - React Native Geolocation Service

无法在 xamarin 中使用 Plugin.Geolocator 获取位置