android webview获取不到页面里面的经纬度
时间: 2023-11-30 21:02:22 浏览: 182
android经纬度的获取
在Android WebView中获取页面里的经纬度需要进行以下几个步骤:
1. 确认页面是否已经开启了定位功能,可以通过在浏览器中打开该页面并在地址栏输入"javascript:navigator.geolocation.getCurrentPosition(function(position){console.log(position)})"来检查;
2. 在Android Manifest文件中添加定位相关的权限:
```
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
```
3. 在WebView中启用JavaScript:
```
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
```
4. 在WebViewClient的onPageFinished()方法中注入JavaScript代码,以获取页面中的经纬度信息:
```
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:window.android.onGeolocationUpdate(navigator.geolocation.getCurrentPosition(function(position){return position;}))");
}
});
// 在WebView中注入JavaScript对象,用于接收页面中的经纬度信息
webView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void onGeolocationUpdate(String position) {
// 处理获取到的经纬度信息
}
}, "android");
```
在上述代码中,注入的JavaScript代码将会调用一个名为"android.onGeolocationUpdate()"的JavaScript方法,并传递获取到的经纬度信息作为参数。在Java代码中,我们通过在WebView中注入一个名为"android"的JavaScript对象,并在该对象中定义一个名为"onGeolocationUpdate()"的方法,用于处理获取到的经纬度信息。
阅读全文