WebView geolocation 相關(guān)

  1. 需要允許WebView使用JS
WebSettings.setJavaScriptEnabled(true);
  1. 應(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" />
  1. 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);
 }
});
  1. WebView的定位數(shù)據(jù)儲(chǔ)存在sqlite數(shù)據(jù)庫中,通過WebSettings.setGeolocationDatabasePath(...)方法可以設(shè)置數(shù)據(jù)庫存儲(chǔ)位置。如下設(shè)置定位信息存儲(chǔ)的數(shù)據(jù)庫的放置位置:
webView.getSettings().setGeolocationDatabasePath( context.getFilesDir().getPath() );
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1、不安全的隨機(jī)數(shù)生成,在CSRF TOKEN生成、password reset token生成等,會(huì)造成toke...
    nightmare丿閱讀 3,748評論 0 1
  • 為了方便開發(fā)者實(shí)現(xiàn)在app內(nèi)展示網(wǎng)頁并與網(wǎng)頁交互的需求,Android SDK提供了WebView組件。 它繼承自...
    pilipalaKing閱讀 251評論 0 0
  • WebView常用方法 String getUrl():獲取當(dāng)前頁面的URL。 reload():重新reload...
    JuSong閱讀 3,342評論 0 3
  • 1.WebSettings webSettings=webView.getSettings(); setAllow...
    LAu_閱讀 5,539評論 0 4
  • 好吧,或許你猜對了。這確實(shí)是一本關(guān)于如何規(guī)范論文寫作的指導(dǎo)書。大到如何確立研究問題,如何進(jìn)行批判性閱讀構(gòu)建論點(diǎn),小...
    眼鏡蛇要飛閱讀 1,866評論 1 2