webview 使用

webview 使用

1.為了使用與加載,必須使用網(wǎng)絡權限

<uses-permission android:name="android.permission.INTERNET" />

2.加載方式

1)動態(tài)加載

  ex:

   WebView webview = new WebView(this);

    setContentView(webview);

   webview.loadUrl("http://slashdot.org/");


   String summary = "<html><body>You scored <b>192</b> points.</body></html>";

   webview.loadData(summary, "text/html", null);

 2)通過加載xml/html5

 ex:

   webview = (WebView) findViewById(R.id.webview);

   webview.loadUrl("file:///android_asset/index.html");  


3.webview的定制點

1)創(chuàng)建于設置webChromeClient子類,該類調用可能會影響瀏覽器用戶界面發(fā)生的東西汽畴,例如预柒,進度更新和javaSript警報發(fā)送在這里。

2)創(chuàng)建和設置webviewClient子類喳资,它被稱為當事情發(fā)送觉吭,影響內容的呈現(xiàn),例如錯誤與表單的提交仆邓。你也可以在這里攔截URL加載(通過shouldOverrideUrloading())

3)修改websetting 比如啟用javaScript setJavaScriptEnabled()鲜滩。

4)向webview使用addJvaScriptInterface注入java對象(對象,字符串)方法节值。這個方法允許將java對象注入到一個頁面的javaScript上下文徙硅,這樣他們可以通過javascript訪問的頁面。

ex:

//顯示進度與顯示錯誤

 webview.setWebChromeClient(new WebChromeClient() {

   public void onProgressChanged(WebView view, int progress) {

     // Activities and WebViews measure progress with different scales.

     // The progress meter will automatically disappear when we reach 100%

   //進度

     activity.setProgress(progress * 1000);

   }

 });

 webview.setWebViewClient(new WebViewClient() {

  //錯誤

   public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

     Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();

   }

 });

重點:WebChromeClient使用

getDefaultVideoPoster() 

當video不playing時候搞疗,默認調用一張海報來顯示


獲得當前Video的進度

getVideoLoadingProgressView()


當前加載頁面進度改變

onProgressChanged(WebView view, int newProgress) 

4.設置setting管理

1)要啟用內置變焦

webSettings.setBuiltlnZoomControls(boolen b)

內置的放大機制包括屏幕縮放控件,WebView的顯示內容,使用縮放手勢控制縮放嗓蘑。這些屏幕上的控件是否顯示可以設置與setDisplayZoomControls(布爾)。默認的是false。

注意:使用變焦脐往,如果高度或寬度設置為WRAP_CONTENT可能導致未定義行為休吠,應該避免。


2)啟用或禁止webView的Ulr訪問

setAllowContentAccess()

注意:內容的URL訪問允許webView加載內容從系統(tǒng)安裝一個內容提供者业簿,默認啟用


3)啟用或禁止文件訪問

setAllowFileAccess()

默認情況下為啟用瘤礁,注意,這個啟用和禁止文件系統(tǒng)訪問梅尤,資源仍未可使用文件//assrt res


4)JavaScript文件的上下文中運行方案是否應該允許URL訪問其他文件方案的內容的URL柜思。

使最嚴格,因此安全政策,應禁用此設置。注意,該設置將被忽略的價值如果getAllowUniversalAccessFromFileURLs()是正確的巷燥。注意,此設置只影響JavaScript訪問文件計劃資源赡盘。其他訪問這些資源,例如,從圖像的HTML元素,不受影響。為了防止可能違反ICE_CREAM_SANDWICH和早期設備上相同的域策略

setAllowUniversalAccessFromFileURLs//參考


5)是否使用應用程序的緩存api集

默認為false

SetAppCacheEnabled:

注意,為了使應用程序緩存API啟用,一個有效的數(shù)據(jù)庫路徑也必須提供給setAppCachePath(字符串)缰揪。

setAppCachePath :

設置應用程序緩存文件的路徑陨享。為了讓應用程序緩存API啟用,調用這個方法必須使用一個路徑,可以編寫的應用程序。這種方法應該只被調用為一次:重復調用將被忽略钝腺。

setAppCacheMaxSize

設置應用程序緩存內容的最大大小抛姑。傳遞的大小將被四舍五入為最接近的值,數(shù)據(jù)庫可以支持,這應被視為一個指南,不是硬限制。設置大小值小于當前數(shù)據(jù)庫大小不會引起數(shù)據(jù)庫修剪艳狐。默認大小是MAX_VALUE定硝。建議把最大大小設置為默認值。


6)是否使用內置的放大機制

setBuiltInZoomControls

內置的放大機制包括屏幕縮放控件,WebView的顯示內容,使用縮放手勢控制縮放毫目。這些屏幕上的控件是否顯示可以設置與setDisplayZoomControls(布爾)蔬啡。默認的是假的。 內置的機制是目前唯一支持放大機制,因此建議此設置總是啟用镀虐。

setDisplayZoomControls

設置是否顯示屏幕縮放控件

setDefaultZoom

設置默認放大

setSupportZoom

否應該支持使用其屏幕縮放控件和手勢縮放箱蟆。應該使用特定的放大機制,可以設置與setBuiltInZoomControls(布爾)。這個設置不會影響放大執(zhí)行使用zoomIn()和zoomOut()方法粉私。默認是正確的

supportZoom

WebView是否支持縮放顽腾。


7.覆蓋的方式使用緩存

setCacheMode

覆蓋的方式使用緩存。使用緩存的方式是基于導航類型诺核。對于一個正常的頁面加載,根據(jù)需要緩存的情況下將檢查和內容抄肖。當導航,內容不是重新檢驗它,而不是只是從緩存檢索的內容。這種方法允許客戶端通過指定LOAD_DEFAULT之一,覆蓋這一行為LOAD_CACHE_ELSE_NETWORK,LOAD_NO_CACHE或LOAD_CACHE_ONLY窖杀。默認值是LOAD_DEFAULT漓摩。


8.字體

setCursiveFontFamily

設置自定義字體名稱。默認值是“cursive”入客。

setDefaultFixedFontSize  //fixed固定的

setDefaultFontSize

默認字體大小

setDefaultTextEncodingName

設置html默認編碼

setFantasyFontFamily

設置一個虛有的字體類型

setMinimumFontSize

設置最小字體大小

setSerifFontFamily

設置sans-serif類型字體

setStandardFontFamily

設置標準字體的名字

setTextSize

設置文本字體的大小

setTextZoom

設置文本頁面的縮放比例管毙。默認值是100腿椎。


9.設置是否使用數(shù)據(jù)庫儲存

setDatabaseEnabled

設置是否啟用數(shù)據(jù)庫存儲API。默認值是錯誤的夭咬。參見setDatabasePath(字符串)如何正確設置數(shù)據(jù)庫存儲API啃炸。這個設置是全球性的,在所有WebView實例的過程。注意你應該只修改這個設置之前做任何WebView頁面加載在一個給定的過程,隨著WebView實現(xiàn)可能忽視這一點后更改此設置卓舵。

setDatabasePath

數(shù)據(jù)庫儲存路徑


10.根據(jù)菜單項標志禁用操作模式菜單項南用。

setDisabledActionModeMenuItems


11.設置是否啟用了DOM 儲存 API。默認值是錯誤的掏湾。

setDomStorageEnabled


12.是否會實現(xiàn)平穩(wěn)過渡而平移或縮放或同時承載WebView沒有焦點的窗口裹虫。

setEnableSmoothTransition

如果這是真的,WebView將選擇一個解決方案來最大化性能。例如WebView的內容可能不是在過渡更新融击。如果它是假的,WebView將保持其忠誠筑公。默認值是錯誤的。


13.設置路徑保存地理定位數(shù)據(jù)庫

setGeolocationDatabasePath

為了定位權限和緩存位置被持久化,調用這個方法必須使用一個路徑,可以編寫的應用程序尊浪。

setGeolocationEnabled

是否啟用地理定位


14.告訴JavaScript來自動打開的窗口匣屡。

setJavaScriptCanOpenWindowsAutomatically

這適用于JavaScript函數(shù)window.open()。默認的是假的际长。

setJavaScriptEnabled

是否允許使用js


15.是否加載頁概述模式

setLoadWithOverviewMode

也就是說,鏡頭拉出寬度適合在屏幕上的內容耸采。這個設置時考慮內容的寬度大于WebView控件的寬度,例如,當getUseWideViewPort()啟用兴泥。默認的是假的


16.是否需要用戶手勢播放媒體工育。默認是正確的。

setMediaPlaybackRequiresUserGesture


17.集合的最小邏輯字體大小搓彻。默認是8如绸。

setMinimumLogicalFontSize


18.設置渲染線程的優(yōu)先級。

setRenderPriority

與其他的設置,這個只需要每個進程被調用為一次旭贬。默認值是正常的怔接。


19.設置是否保存表單數(shù)據(jù)

setSaveFormData

默為true;

setSavePassword

保存密碼


20.是否支持多個窗口。

setSupportMultipleWindows

如果設置為真,onCreateWindow(WebView稀轨、布爾扼脐、布爾值、消息)必須由主機應用程序實現(xiàn)奋刽。默認的是假的瓦侮。

supportMultipleWindows

WebView是否支持多個窗口。

5.設置Cookie緩存與window管理

由于瀏覽器與應用軟件的cookie不共享佣谐,所以應用程序應該有自己的緩存

6.webview的方法
1)注入js接口肚吏,可以通過js調用移動的方法

addJavascriptInterface(Object object, String name) 

removeJavascriptInterface(String name) 

2)返回鍵的調用

canGoBack() 得到這個WebView是否有回來的歷史項目。

canGoBackOrForward(int) 頁面是否可以給定數(shù)量的步驟上向前或向后移動狭魂。

canGoForward() 得到這個WebView是否有向前的歷史項目罚攀。

clearHistory() 清除列表清單

copyBackForwardList()  復制back清單列表

goBack() //回到緩存列表

goBackOrForward(int steps) 

goForward() 

3)清除緩存資源

clearCache(boolean includeDiskFiles) 

4)獲取當前頁面的進度

getProgress() 

5)獲取當前頁面的url

getUrl() 

6)將給定數(shù)據(jù)加載到這個URL WebView使用“數(shù)據(jù)”方案党觅。

將給定數(shù)據(jù)加載到這個URL WebView使用“數(shù)據(jù)”方案。

loadData(String data, String mimeType, String encoding) 

將給定數(shù)據(jù)加載到這個WebView,使用baseUrl作為基本URL的內容斋泄。

loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) 

7)回復一個webview后調用方法

   onResume() 

8)保存當前狀態(tài)

saveState(Bundle outState)

9)注冊接口時使用的渲染引擎,不能處理的內容,應該下載杯瞻。

setDownloadListener(DownloadListener listener) 

10)使調試web內容(HTML / CSS / JavaScript)加載到該應用程序的任何webview。

setWebContentsDebuggingEnabled(boolean enabled) 

11)停止當前加載

stopLoading() 

1.webView 使用定位功能:

1)權限:


    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>  

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>  

2.屬性設置


webSettings =webView.getSettings();// 網(wǎng)頁設置默認屬性

webView.setInitialScale(39);// 適應豎屏

webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);// 去掉底部和右邊的滾動條

// webSettings.setRenderPriority(RenderPriority.HIGH);// 提高渲染優(yōu)先級

webSettings.setJavaScriptEnabled(true);// 設置是否可以交互Javascript

webSettings.setAllowFileAccess(true);// 啟用或禁止WebView訪問文件數(shù)據(jù)

webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);// 設置顯示模式

webSettings.setDefaultZoom(ZoomDensity.MEDIUM);// 適應屏幕

// webView.getSettings().setUseWideViewPort(true);// 是否任意比例縮放

webView.getSettings().setLoadWithOverviewMode(true);// 縮放至屏幕的大小

// webView.getSettings().setUseWideViewPort(true);// 是否任意比例縮放

webSettings.setBuiltInZoomControls(false);// 設置是否支持縮放

// webSettings.setSupportZoom(false);// 設置是否支持變焦,僅支持雙擊縮放

webSettings.setNeedInitialFocus(false);// 設置是否可以訪問文件

// webSettings.setBlockNetworkImage(true);// 加載圖片放在最后加載渲染

// webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//

// 設置緩存模式

webSettings.setCacheMode(webSettings.LOAD_NO_CACHE);// 不使用緩存

// 這里的名稱就是在頁面window.fxl.testFunction()所取的別名

//js調用移動端方法

webView.addJavascriptInterface(new Scan2(),"mMap"); 

//關鍵setGeolocationEnabled

webView.getSettings().setGeolocationEnabled(true);//開啟定位

webView.setWebChromeClient(new WebChromeClient() {

  @Override


  public void onGeolocationPermissionsShowPrompt(String origin,


  android.webkit.GeolocationPermissions.Callback callback) {


    callback.invoke(origin, true, false);


    super.onGeolocationPermissionsShowPrompt(origin, callback);

}

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末炫掐,一起剝皮案震驚了整個濱河市又兵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卒废,老刑警劉巖沛厨,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異摔认,居然都是意外死亡逆皮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門参袱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來电谣,“玉大人,你說我怎么就攤上這事抹蚀〗宋” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵环壤,是天一觀的道長晒来。 經(jīng)常有香客問我,道長郑现,這世上最難降的妖魔是什么湃崩? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮接箫,結果婚禮上攒读,老公的妹妹穿的比我還像新娘。我一直安慰自己辛友,他們只是感情好薄扁,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著废累,像睡著了一般邓梅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上九默,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天震放,我揣著相機與錄音,去河邊找鬼驼修。 笑死殿遂,一個胖子當著我的面吹牛诈铛,可吹牛的內容都是我干的。 我是一名探鬼主播墨礁,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼幢竹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了恩静?” 一聲冷哼從身側響起焕毫,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎驶乾,沒想到半個月后邑飒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡级乐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年疙咸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片风科。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡撒轮,死狀恐怖,靈堂內的尸體忽然破棺而出贼穆,到底是詐尸還是另有隱情题山,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布故痊,位于F島的核電站顶瞳,受9級特大地震影響,放射性物質發(fā)生泄漏崖蜜。R本人自食惡果不足惜浊仆,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豫领。 院中可真熱鬧,春花似錦舔琅、人聲如沸等恐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽课蔬。三九已至,卻和暖如春郊尝,著一層夾襖步出監(jiān)牢的瞬間二跋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工流昏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扎即,地道東北人吞获。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像谚鄙,于是被迫代替她去往敵國和親各拷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容

  • WebView常用方法 String getUrl():獲取當前頁面的URL闷营。 reload():重新reload...
    JuSong閱讀 3,299評論 0 3
  • 前言 現(xiàn)在很多App里都內置了Web網(wǎng)頁(Hyprid App)烤黍,比如說很多電商平臺,淘寶傻盟、京東速蕊、聚劃算等等,如下...
    Carson帶你學安卓閱讀 53,076評論 13 204
  • Android WebView使用(一)Android WebView使用js與java交互(二)Android...
    mm_cuckoo閱讀 2,964評論 0 4
  • 哀哉娘赴!十年戎馬倥傯互例,你終是沒有見到長安洛陽的風光霽月,杏花微雨筝闹。 ——題記 秋風起媳叨,初涼意。人已寐关顷,萬籟皆寂糊秆。 你...
    詩酒趁_年hua閱讀 304評論 0 8
  • 這是一個夜 我躺在床上 床很高 我很小 又是一個夜晚 我躲藏在白晝 你找不到我 我躺在床上 床很高 我很小 你...
    大鴨蛋黃閱讀 125評論 0 0