Android WebView 地理位置定位无法工作

3

我的应用程序显示了一个 WebView,该 WebView 请求用户的地理位置。在我的 WebChromeClient 中,onGeolocationPermissionsShowPrompt 回调被调用,但 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" />

包括 GPS 权限并确保 GPS 处于开启状态。 - Sathish Kumar
GPS已开启并可用于其他应用程序,如Google地图。我已将相关权限添加到问题中。 - Marc Plano-Lesay
你解决了这个问题吗?我也遇到了同样的问题。 - Arda Kazancı
@ArdaKazancı 抱歉,我已经不再参与这个项目了。我不知道它是否已经解决。 - Marc Plano-Lesay
1个回答

0

是的,这是真的:onGeolocationPermissionsShowPrompt只会在网页第一次请求用户位置时被调用,之后就不再被调用了。 我也遇到了同样的问题。一个解决方法是在位置权限被授予后重新加载页面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接