Географическое положение WebView работает только при включенном / постоянно включенном Wi-Fi. - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь включить WebView для получения местоположения с мобильными данными (3 г / л), но местоположение принимается только при использовании Wi-Fi / включении сканирования Wi-Fi.

Вот журнал запроса местоположенияраспечатывается системой при использовании мобильных данных:


LocationManagerService: requestLocationUpdates: uid=11294, pid=17340, provider=fused, package=com.my.package listener= android.location.ILocationListener$Stub$Proxy@713f86 intent= null

По какой-то причине местоположение никогда не принимается, и WebView продолжает искать состояние местоположения.

Если Wi-Fi включен или включен длявсегда сканирует, даже когда выключен, он работает очень быстро как на Wi-Fi, так и на мобильных данныхнастройки:


mWebView.settings.domStorageEnabled = true
mWebView.settings.builtInZoomControls = true
mWebView.settings.loadWithOverviewMode = true
mWebView.settings.useWideViewPort = true
mWebView.settings.displayZoomControls = false
mWebView.settings.mediaPlaybackRequiresUserGesture = false
mWebView.settings.setAppCacheEnabled(true)
mWebView.settings.databaseEnabled = true
mWebView.settings.domStorageEnabled = true
mWebView.settings.javaScriptEnabled = true
mWebView.settings.allowContentAccess = true
mWebView.settings.javaScriptCanOpenWindowsAutomatically = true
mWebView.settings.setGeolocationEnabled(true)
mWebView.settings.setGeolocationDatabasePath(context.filesDir.path)

Клиент Chrome:


mWebView.webChromeClient = object : WebChromeClient() {

            override fun onGeolocationPermissionsShowPrompt(origin: String?, callback: GeolocationPermissions.Callback) {
                super.onGeolocationPermissionsShowPrompt(origin, callback)

                OLog.i(tag(), "Requesting location")
                callback.invoke(origin, true, true)
            }
        }
    
...