我的应用程序正在显示请求用户地理位置的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" />
答案 0 :(得分:0)
是的,它是真的:onGeolocationPermissionsShowPrompt被调用一次,第一次网页请求用户的位置,然后它不再被调用。 我也面临同样的问题。一个解决方法是在授予位置权限后重新加载页面。