删除地理定位插件后,Cordova 地理定位仍然有效

Cordova geolocation still works after geolocation plugin is removed

在 Android 上,Cordova 的地理定位插件始终需要大约 6 秒来确定位置,而其他应用程序 return 大多数时候立即确定位置并且几乎不会超过 2 秒。

我遇到了这个 post Phonegap geolocation sometimes not working on android 并按照说明删除了地理定位插件:

cordova plugin rm cordova-plugin-geolocation

为了验证插件是否已删除,我再次使用 运行 应用 ionic run android 预计以下调用会失败

var posOptions = {enableHighAccuracy: false, timeout: 10000};

$cordovaGeolocation
    .getCurrentPosition(posOptions)
    .then(function (position) {
        return new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
    }, function() {
        $cordovaToast.showLongCenter('Could not get current location. Is GPS Enabled?');
    });

但它的工作方式与以前完全一样。所以我添加和删除了 android 平台,认为插件可能被缓存:

cordova platform rm android
cordova platform add android
cordova plugin list

com.tiltshiftfocus.cordova.plugin.clearCache 1.0.5 "Clear Cache"
cordova-plugin-camera 2.1.0 "Camera"
cordova-plugin-crosswalk-webview 1.5.0 "Crosswalk WebView Engine"
cordova-plugin-device 1.1.0 "Device"
cordova-plugin-file 3.0.0 "File"
cordova-plugin-file-transfer 1.4.0 "File Transfer"
cordova-plugin-statusbar 2.0.0 "StatusBar"
cordova-plugin-whitelist 1.2.1 "Whitelist"
cordova-plugin-x-toast 2.4.0 "Toast"
ionic-plugin-keyboard 1.0.8 "Keyboard"
plugin.google.maps 1.3.9 "phonegap-googlemaps-plugin"

我还清除了 webview 缓存以防万一

$ionicPlatform.ready(function () {

    window.cache.clear();
    ...
}

但它仍然像以前一样运行。为什么我的应用程序在没有插件的情况下仍然能够从 $cordovaGeolocation.getCurrentPosition 成功获得位置?它使用的是 webview 的地理定位服务而不是插件吗?我怎么知道它正在使用哪种服务,因为我怀疑该应用程序一开始就没有使用插件,这可能是导致 gps 修复缓慢的原因。

我对应用程序进行了一些文本和代码更改,以查看是否反映了任何更改,并且确实显示了新的文本和代码。我什至在 运行 ionic run android 之前从设备上完全卸载了该应用程序,但地理定位仍然有效。

插件文档说

This API is based on the W3C Geolocation API Specification, and only executes on devices that don't already provide an implementation.

因为有这么多 Android 设备我无法测试我只包含插件以确保安全。

至于 6 秒与 2 秒,如果不查看其他应用程序的代码,很难评估其他应用程序在做什么。他们可能正在使用缓存位置等。