gpt4 book ai didi

android webview 地理定位

转载 作者:IT老高 更新时间:2023-10-28 13:05:49 26 4
gpt4 key购买 nike

我必须在 WebView 中检索用户的位置。我使用以下 Javascript 执行此操作:

function getLocation() {
navigator.geolocation.getCurrentPosition(displayLocation, handleError);
}

但是权限请求弹出窗口永远不会打开。

我已经设置了这些设置:

ws.setJavaScriptEnabled(true);
ws.setGeolocationEnabled(true);
ws.setJavaScriptCanOpenWindowsAutomatically(true);

WebView 中访问用户位置的正确方法是什么?

最佳答案

  • 必须在 WebView 中启用 JavaScript,使用 WebSettings.setJavaScriptEnabled(true);
  • 应用需要权限ACCESS_FINE_LOCATION
  • WebView 必须使用实现 WebChromeClient.onGeolocationPermissionsShowPrompt() 的自定义 WebChromeClient。这种方法由 WebView 调用以获取向 JavaScript 公开用户位置的权限。 (在浏览器的情况下,我们向用户显示一个提示。)默认实现什么都不做,所以永远不会获得许可,也永远不会将位置传递给 JavaScript。始终授予权限的简单实现是...

    webView.setWebChromeClient(new WebChromeClient() {
    public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
    callback.invoke(origin, true, false);
    }
    });

地理定位使用数据库在 session 之间保持缓存的位置和权限。使用 WebSettings.setGeolocationDatabasePath(...) 设置数据库的位置。如果未设置数据库的位置,则持久存储将不可用,但 Geolocation 将继续正常工作,否则。要设置数据库的位置,请使用 ...

webView.getSettings().setGeolocationDatabasePath( context.getFilesDir().getPath() );

关于android webview 地理定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5329662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com