【发布时间】:2015-08-21 13:26:48
【问题描述】:
我的应用程序正在显示一个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 处于开启状态。
-
GPS 已开启并适用于 Google 地图等其他应用程序。我在问题中添加了相关权限。
-
你的问题解决了吗。我有同样的问题
-
@ArdaKazancı 对不起,我不再从事这个项目了。我不知道它是如何解决的——如果它已经解决了。
标签: android webview geolocation