我的应用程序显示了一个 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" />