Android WebView地理位置无效

时间:2015-08-21 13:26:49

标签: android webview geolocation

我的应用程序正在显示请求用户地理位置的WebView。调用onGeolocationPermissionsShowPrompt中的WebChromeClient回调,但从不调用JS回调。这是我的Java代码:

protected void onCreate(Bundle savedInstanceState) {
    // Binding views…

    webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webview.getSettings().setGeolocationEnabled(true);
    webview.setWebChromeClient(new GeoWebChromeClient());

    webview.loadUrl(BASE_URL);
}

private class GeoWebChromeClient extends WebChromeClient {
    @Override
    @DebugLog
    public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
        callback.invoke(origin, true, true);
    }
}

正如预期的那样,onGeolocationPermissionsShowPrompt被调用一次,第一次网页请求用户的位置,然后不再被调用。但无论是在第一个还是以下的位置请求中,都不会调用JS回调。

编辑:我刚刚在其他应用程序中测试了请求后台位置。有效。我的应用程序具有以下权限(我很确定其中大部分都没用,但是......):

<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

1 个答案:

答案 0 :(得分:0)

是的,它是真的:onGeolocationPermissionsShowPrompt被调用一次,第一次网页请求用户的位置,然后它不再被调用。 我也面临同样的问题。一个解决方法是在授予位置权限后重新加载页面。