- 需要允许WebView使用JS
WebSettings.setJavaScriptEnabled(true);
- 应用需要ACCESS_FINE_LOCATION权限(6.0以上运行时获取);
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
最好声明多个权限,用来确定定位信息:
<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.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
- WebView需要设置一个自定义的WebChromeClient,需要实现WebChromeClient.onGeolocationPermissionsShowPrompt()方法用来处理js请求定位权限。如下是一个简单的实现:
webView.setWebChromeClient(new WebChromeClient() {
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
}
});
- WebView的定位数据储存在sqlite数据库中,通过WebSettings.setGeolocationDatabasePath(...)方法可以设置数据库存储位置。如下设置定位信息存储的数据库的放置位置:
webView.getSettings().setGeolocationDatabasePath( context.getFilesDir().getPath() );