Geolocation API不提示在移动浏览器中定位

时间:2018-11-19 10:34:07

标签: javascript browser geolocation mobile-browser

地理位置API在网络浏览器中要求用户批准,这很容易处理,但是在移动浏览器中,启用GPS之前,不会显示启用位置的提示。例如,当且仅当GPS开启时,提示“ www.abc.com需要您的位置”的提示。是否有任何方法可以提示您输入位置,即使GPS处于禁用状态也可以通过该提示进行提示?

1 个答案:

答案 0 :(得分:0)

  • 必须使用以下命令在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);  } });

地理位置使用数据库在会话之间保留缓存的位置和权限。使用WebSettings.setGeolocationDatabasePath(...)设置数据库的位置。如果未设置数据库的位置,则永久性存储将不可用,但否则地理定位将继续正常运行。要设置数据库的位置,请使用

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

更多信息

link1 link2