android中webview定位問題示例詳解
前言
現(xiàn)在很多App里都內(nèi)置了Web網(wǎng)頁(Hyprid App),比如說很多電商平臺,淘寶、京東、聚劃算等等

京東首頁
那么這種該如何實現(xiàn)呢?其實這是Android里一個叫WebView的組件實現(xiàn)的。
最近在做安卓的網(wǎng)頁開發(fā)。有一個頁面需要用到定位,但是一直定位獲取失敗。很難過。網(wǎng)上教程也很多,但是無一例外全部失敗。最后老夫花了3天時間,嘔心瀝血,終于研制出了解決方案。
三步走戰(zhàn)略:
一、獲取權(quán)限
android 6.0 以后,需要動態(tài)的獲取位置或者存儲權(quán)限,按照各自的愛好放置位置。我是應(yīng)用開啟初始化的時候,放在MainActivity中的OnCreate方法里。
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getApplicationContext(),"沒有權(quán)限,請手動開啟定位權(quán)限",Toast.LENGTH_SHORT).show();
// 申請一個(或多個)權(quán)限,并提供用于回調(diào)返回的獲取碼(用戶定義)
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100);
return false;
}
二、webview setting 設(shè)置(復(fù)制了別人代碼)
WebView webView = (WebView)findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
//webview支持js腳本
webSettings.setJavaScriptEnabled(true);
//啟用數(shù)據(jù)庫
webSettings.setDatabaseEnabled(true);
//設(shè)置定位的數(shù)據(jù)庫路徑
String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
webSettings.setGeolocationDatabasePath(dir);
//啟用地理定位
webSettings.setGeolocationEnabled(true);
//開啟DomStorage緩存
webSettings.setDomStorageEnabled(true)
//配置權(quán)限
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedIcon(WebView view, Bitmap icon) {
super.onReceivedIcon(view, icon);
}
@Override
public void onGeolocationPermissionsShowPrompt(String origin,Callback callback) {
callback.invoke(origin, true, false);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
});
三 網(wǎng)絡(luò)權(quán)限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
網(wǎng)上的教程到這里就結(jié)束了。一般都會告訴你,朋友你定位能用了。然而我并不能用?。。?!
檢查來檢查去。沒啥毛病啊。一模一樣??!
四 build gradle (我用的是as )修改
自己app的build.gradle 里面一個targetSdkVersion 23 (為什么寫23 高德地圖告訴我的)
然后你的工程地圖能用了。
參考網(wǎng)站:http://blog.csdn.net/cheunjq/article/details/54729875
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Android中TextView限制最大行數(shù)并在最后用顯示...全文
TextView在android開發(fā)中是一個經(jīng)常用到的基礎(chǔ)控件,功能也很強大,限制輸入字符類型,字?jǐn)?shù)什么的,下面這篇文章主要給大家介紹了關(guān)于Android中TextView限制最大行數(shù)并在最后用顯示...全文的相關(guān)資料,需要的朋友可以參考下2022-04-04
Android程序開發(fā)如何處理圖像格式類及圖像轉(zhuǎn)換
這篇文章主要介紹了Android程序開發(fā)如何處理圖像格式類及圖像轉(zhuǎn)換,需要的朋友可以參考下2015-07-07
Flutter StreamBuilder組件實現(xiàn)局部刷新示例講解
日常使用最多的局部刷新為Provider狀態(tài)管理 Selector,今天分享flutter框架自帶的StreamBuilder組件,該組件可做到局部刷新,使用簡單且輕便2022-11-11
解析activity之間數(shù)據(jù)傳遞方法的詳解
本篇文章是對activity之間數(shù)據(jù)傳遞的方法進行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05

