WebView攔截替換URL請求

Android中處理網(wǎng)頁時我們必然用到WebView,這里我們有這樣一個需求俱恶,我們想讓W(xué)ebView在處理網(wǎng)絡(luò)請求的時候?qū)⒛承┱埱髷r截替換成某些特殊的資源缘琅。具體一點兒說枫虏,在WebView加載 http://m.sogou.com
時擎场,會加載一個logo圖片意系,我們的需求就是將這個logo圖片換成另一張圖片钾腺。

shouldInterceptRequest
好在Android中的WebView比較強大徙垫,從API 11(Android 3.0)開始, shouldInterceptRequest被引入就是為了解決這一類的問題放棒。

shouldInterceptRequest這個回調(diào)可以通知主程序WebView處理的資源(css,js,image等)請求姻报,并允許主程序進行處理后返回數(shù)據(jù)。如果主程序返回的數(shù)據(jù)為null间螟,WebView會自行請求網(wǎng)絡(luò)加載資源吴旋,否則使用主程序提供的數(shù)據(jù)。注意這個回調(diào)發(fā)生在非UI線程中,所以進行UI系統(tǒng)相關(guān)的操作是不可以的厢破。

shouldInterceptRequest有兩種重載荣瑟。
public WebResourceResponse shouldInterceptRequest (WebView view, String url) 從API 11開始引入,API 21棄用

public WebResourceResponse shouldInterceptRequest (WebView view, WebResourceRequest request) 從API 21開始引入

本次例子暫時使用第一種摩泪,即shouldInterceptRequest (WebView view, String url)笆焰。
示例代碼

WebView webView = new WebView(this);
webView.setWebViewClient(new WebViewClient() { 
@Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { 
Log.i(LOGTAG, "shouldInterceptRequest url=" + url + ";threadInfo" + Thread.currentThread());

 WebResourceResponse response = null;
 if (url.contains("logo")) { 
try { 
    InputStream localCopy = getAssets().open("droidyue.png");
     response = new WebResourceResponse("image/png", "UTF-8",            localCopy); 
    } catch (IOException e) { 
    e.printStackTrace(); } 
 } return response; } });
setContentView(webView);webView.loadUrl("http://m.sogou.com");

其中WebResourceResponse需要設(shè)定三個屬性,MIME類型见坑,數(shù)據(jù)編碼嚷掠,數(shù)據(jù)(InputStream流形式)。

示例下載
百度云盤

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荞驴,一起剝皮案震驚了整個濱河市不皆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌熊楼,老刑警劉巖粟焊,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異孙蒙,居然都是意外死亡,警方通過查閱死者的電腦和手機悲雳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門挎峦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人合瓢,你說我怎么就攤上這事坦胶。” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵顿苇,是天一觀的道長峭咒。 經(jīng)常有香客問我,道長纪岁,這世上最難降的妖魔是什么凑队? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮幔翰,結(jié)果婚禮上漩氨,老公的妹妹穿的比我還像新娘。我一直安慰自己遗增,他們只是感情好叫惊,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著做修,像睡著了一般霍狰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饰及,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天蔗坯,我揣著相機與錄音,去河邊找鬼旋炒。 笑死步悠,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的瘫镇。 我是一名探鬼主播鼎兽,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼铣除!你這毒婦竟也來了谚咬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤尚粘,失蹤者是張志新(化名)和其女友劉穎择卦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郎嫁,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡秉继,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泽铛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尚辑。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖盔腔,靈堂內(nèi)的尸體忽然破棺而出杠茬,到底是詐尸還是另有隱情月褥,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布瓢喉,位于F島的核電站宁赤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏栓票。R本人自食惡果不足惜决左,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逗载。 院中可真熱鬧哆窿,春花似錦、人聲如沸厉斟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擦秽。三九已至码荔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間感挥,已是汗流浹背缩搅。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留触幼,地道東北人硼瓣。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像置谦,于是被迫代替她去往敵國和親堂鲤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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