- 需要允許WebView使用JS
WebSettings.setJavaScriptEnabled(true);
- 應(yīng)用需要ACCESS_FINE_LOCATION權(quán)限(6.0以上運(yùn)行時(shí)獲取);
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
最好聲明多個(gè)權(quán)限,用來確定定位信息:
<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需要設(shè)置一個(gè)自定義的WebChromeClient,需要實(shí)現(xiàn)WebChromeClient.onGeolocationPermissionsShowPrompt()方法用來處理js請求定位權(quán)限。如下是一個(gè)簡單的實(shí)現(xiàn):
webView.setWebChromeClient(new WebChromeClient() {
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
}
});
- WebView的定位數(shù)據(jù)儲(chǔ)存在sqlite數(shù)據(jù)庫中,通過WebSettings.setGeolocationDatabasePath(...)方法可以設(shè)置數(shù)據(jù)庫存儲(chǔ)位置。如下設(shè)置定位信息存儲(chǔ)的數(shù)據(jù)庫的放置位置:
webView.getSettings().setGeolocationDatabasePath( context.getFilesDir().getPath() );