Android WebView 地理位置不起作用
Posted
技术标签:
【中文标题】Android WebView 地理位置不起作用【英文标题】:Android WebView geolocation not working 【发布时间】: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ı 对不起,我不再从事这个项目了。我不知道它是如何解决的——如果它已经解决了。 【参考方案1】:是的,这是真的:onGeolocationPermissionsShowPrompt 被调用一次,网页第一次请求用户的位置,然后它就不再被调用了。 我也面临同样的问题。一种解决方法是在授予位置权限后重新加载页面。
【讨论】:
以上是关于Android WebView 地理位置不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio:地理定位不起作用。无法在 Webview 中获取地理位置
navigator.permissions.query 在 android/ios webview 中不起作用
我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法