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

Posted

技术标签:

【中文标题】Phonegap/Cordova Geolocation 不适用于 Android 4.0+,但适用于所有其他平台【英文标题】:Phonegap/Cordova Geolocation Not working on Android 4.0+ but Working on all other platforms 【发布时间】:2014-07-12 20:25:06 【问题描述】:

我正在使用 Phonegap 3.30 版和 Sencha Touch 提供的 Phonegap 构建和 UI 元素。该应用程序的第一页包含一张地图,地图是使用开放的街道地图和使用 sencha 触摸库 https://market.sencha.com/extensions/ext-ux-leafletmap 的传单呈现的。

如果我将地图设置为不使用在地图上显示您的位置的地理位置选项,则地图在所有平台上都能完美呈现,但是当我启用设置以使用地理位置时,地图会完美呈现并覆盖当前位置所有平台(iosandroid 2.0),但不是 Android 4.0+。

事实上,在 Android 上,地图根本不会呈现,这与它过去使用错误权限时的行为类似。我已通过 Config.xml Phonegap 地理定位插件将应用程序设置为使用 3 个位置权限。这是 Config.xml 的链接https://www.dropbox.com/s/c1im3twg21mnxi6/config.xml

总结一下: 仅启用地理定位的 Android 4.0 会阻止地图呈现,但地图和地理定位适用于所有其他平台。

有人知道是什么原因造成的吗?我没有任何错误被打印到控制台,而且权限是正确的,因为它适用于 Android 2.0,我完全被难住了。

下面的一些图片展示了这个问题,请注意,当应用程序在网络浏览器上运行时,地理定位也可以工作。

启用地理定位后,Android 无法加载

iOS 使用地理位置正确加载

【问题讨论】:

这里还有一个例子,Android 2.0、4.1 可以正常工作,但 4.4 不能。 dropbox.com/s/q4mn2tt3kq2g077/… 【参考方案1】:

我已经解决了这个问题,这个问题发生在 Android 4.2、4.3 和 4.4 上。

您必须在对 Ext.util.geolocation 的调用中明确启用以下选项。允许高精度和频率。这是一个非常令人头疼的问题@Sencha,请让这个简单。

var geo = Ext.create('Ext.util.Geolocation', 
        autoUpdate: false,
        allowHighAccuracy: true,
        frequency: '3000',
        listeners: 
            locationupdate: function(geo) 
                var currentLat = geo.getLatitude();
                var currentLng =  geo.getLongitude();
                var altitude = geo.getAltitude();
                var speed = geo.getSpeed();
                var heading= geo.getHeading();

// Ext.Msg.alert('纬度经度' + currentLat + currentLng); , 位置错误:函数(地理,bTimeout,bPermissionDenied,bLocationUnavailable,消息) 如果(b超时) // Ext.Msg.alert('发生超时',"无法获取当前位置"); 别的 // alert('发生错误。'); ); geo.updateLocation();

【讨论】:

以上是关于Phonegap/Cordova Geolocation 不适用于 Android 4.0+,但适用于所有其他平台的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap/Cordova 中的本地通知

基于 Swift 项目的 PhoneGap/Cordova App

PhoneGap/Cordova 设备未准备好

桌面/移动标准网页中的phonegap / cordova社交共享插件

没有phonegap\.cordova\config.json

CompileXIB 中的 Phonegap (Cordova) 错误