攔截替換WebView資源請求

//覆寫shouldInterceptRequest诬乞,通過url去匹配本地資源,用本地文件替換線上資源,達(dá)到攔截替換目的
private class MyWebViewClient(private val context: Context) : WebViewClient() {

        override fun shouldInterceptRequest(
            view: WebView?,
            request: WebResourceRequest?
        ): WebResourceResponse? {
            val webResourceResponse = shouldInterceptRequest(context, request?.url)
            if (webResourceResponse  != null) {
                return webResourceResponse  
            }
            return super.shouldInterceptRequest(view, request)
        }
    }
//shouldInterceptRequest方法偽代碼

 if (url.isEmpty() || !url.startsWith("http")) {
        return null
}

   //根據(jù)請求url獲取本地文件用來替換線上資源
   val targetFile = getFileByUrl(url)

   //匹配資源類型
    val mimeType = when {
        relativePath.contains(".css") -> "text/css"

        relativePath.contains(".js") -> "application/x-javascript"

        relativePath.contains(".js") -> "application/x-javascript"

        //圖片類型
        relativePath.contains(".jpg") || relativePath.contains(".gif") ||
                relativePath.contains(".png") || relativePath.contains(".jpeg") -> "image/*"

        //pdf
        relativePath.endsWith(".pdf") -> "application/pdf"

        //word文檔
        relativePath.endsWith(".doc") || relativePath.endsWith(".docx") -> "application/msword"

        relativePath.endsWith(".ppt") -> "application/pdf"

        //表格文檔
        relativePath.endsWith(".xlsx") || relativePath.endsWith(".xla") || relativePath.endsWith(".xlc") || relativePath.endsWith(
            ".xlm"
        ) || relativePath.endsWith(".xls") || relativePath.endsWith(".xlt") || relativePath.endsWith(
            ".xlw"
        ) -> "application/vnd.ms-excel"

        else -> "text/html"
    }

    val ins = FileInputStream(targetFile)
    return WebResourceResponse(mimeType, "utf-8", ins)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末震嫉,一起剝皮案震驚了整個濱河市森瘪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌票堵,老刑警劉巖扼睬,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悴势,居然都是意外死亡窗宇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門特纤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來军俊,“玉大人,你說我怎么就攤上這事捧存》喙” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵矗蕊,是天一觀的道長短蜕。 經(jīng)常有香客問我,道長傻咖,這世上最難降的妖魔是什么朋魔? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮卿操,結(jié)果婚禮上警检,老公的妹妹穿的比我還像新娘。我一直安慰自己害淤,他們只是感情好扇雕,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窥摄,像睡著了一般镶奉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上崭放,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天哨苛,我揣著相機與錄音,去河邊找鬼币砂。 笑死建峭,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的决摧。 我是一名探鬼主播亿蒸,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼凑兰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了边锁?” 一聲冷哼從身側(cè)響起姑食,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎砚蓬,沒想到半個月后矢门,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡灰蛙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了隔躲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摩梧。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宣旱,靈堂內(nèi)的尸體忽然破棺而出仅父,到底是詐尸還是另有隱情,我是刑警寧澤浑吟,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布笙纤,位于F島的核電站,受9級特大地震影響组力,放射性物質(zhì)發(fā)生泄漏省容。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一燎字、第九天 我趴在偏房一處隱蔽的房頂上張望腥椒。 院中可真熱鬧,春花似錦候衍、人聲如沸笼蛛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滨砍。三九已至,卻和暖如春妖异,著一層夾襖步出監(jiān)牢的瞬間惋戏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工随闺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留日川,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓矩乐,卻偏偏與公主長得像龄句,于是被迫代替她去往敵國和親回论。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

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