WebView shouldOverrideUrlLoading 攔截超鏈接 & 自定義跳轉(zhuǎn)

需求

在前端富文本編譯器中徽鼎,插入url笆搓,在Android端 點擊鏈接跳轉(zhuǎn)到新頁面,并加載url纬傲。

分析

要是能拿到 超鏈接的點擊事件(使其不在當(dāng)前WebView中展示),然后跳轉(zhuǎn)新頁面就好了

是可以的=钟印找爱!

介紹

WebViewClient 的 shouldOverrideUrlLoading 维苔,會在點擊加載超鏈接時觸發(fā)。

 webViewClient = (object :WebViewClient(){
      override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
          LogUtil.e("url",url)
          return super.shouldOverrideUrlLoading(view, url)
      }
  })

其兩個參數(shù)含義汁雷,一目了然。

重點是返回值报咳!
true 為攔截點擊事件侠讯,表示超鏈接的內(nèi)容不在當(dāng)前 WebView 中加載。(若不做處理暑刃,則點擊超鏈接沒有任何反應(yīng)厢漩,也就是點擊事件被攔截)

false 就是正常的處理事件,點擊超鏈接會在當(dāng)前 WebView 加載超鏈接內(nèi)容

解決

事情已經(jīng)很明白了岩臣,返回值改為 true溜嗜,攔截點擊事件,并通過回調(diào)架谎,處理跳轉(zhuǎn)邏輯炸宵。

 webViewClient = (object :WebViewClient(){
      override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
          LogUtil.e("url",url)
          callBack?.toRiseClub(url)
          return true
      }
  })

防止DNS劫持,頁面有廣告(2019.2.21)

項目中加載了一個很久以前的系統(tǒng)頁面谷扣,是 http 的
有的用戶反應(yīng)土全,有頁面廣告(運營商劫持)
對比加載的其他H5頁面都沒有被劫持(使用的 https ),定位到問題出在 http 請求

問題來了,頁面地址改為 https 后裹匙,發(fā)現(xiàn)有的資源無法加載(資源地址仍為 http )瑞凑,因為WebView默認(rèn)模式,不允許同時加載 http 與 https 的請求幻件。

可查看《WebView加載https和http混合拨黔,導(dǎo)致圖片不顯示問題》

三種安全模式

因為需要同時加載 http 和 https ,所以我選擇了 MIXED_CONTENT_ALWAYS_ALLOW

       /**
         * 加載RiseClub頁面時绰沥,資源是http的篱蝇,需要允許https與http同時加載,所以放開權(quán)限徽曲。
         * 但是要加上白名單功能:手動過濾
         */
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            webSettings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
        }

因為要保證安全性零截,所以需要添加 白名單 功能,也就是主角 shouldOverrideUrlLoading

/**
  * 攔截所有非 jphonics 和 rtunes 的鏈接
  */
 override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
     url?.let {
         /**
          * 跳轉(zhuǎn)到 JPHONICS & RTUNES
          */
         return !(url.contains(TASK_RISE_CLUB_JPHONICS) || url.contains(TASK_RISE_CLUB_RTUNES))
     }
     return true
 }

true 取消加載秃臣,false 是繼續(xù)加載涧衙,就夠了,詳情如下

Android SDK WebView

慎哉留真我奥此,毋使覆塵埃...

うす?まき ナルト
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弧哎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子稚虎,更是在濱河造成了極大的恐慌撤嫩,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蠢终,死亡現(xiàn)場離奇詭異序攘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)寻拂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門程奠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人祭钉,你說我怎么就攤上這事瞄沙。” “怎么了朴皆?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵帕识,是天一觀的道長。 經(jīng)常有香客問我遂铡,道長肮疗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任扒接,我火速辦了婚禮伪货,結(jié)果婚禮上们衙,老公的妹妹穿的比我還像新娘。我一直安慰自己碱呼,他們只是感情好蒙挑,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著愚臀,像睡著了一般忆蚀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姑裂,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天馋袜,我揣著相機(jī)與錄音,去河邊找鬼舶斧。 笑死欣鳖,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的茴厉。 我是一名探鬼主播泽台,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼矾缓!你這毒婦竟也來了怀酷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤嗜闻,失蹤者是張志新(化名)和其女友劉穎胰坟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泞辐,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年竞滓,在試婚紗的時候發(fā)現(xiàn)自己被綠了咐吼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡商佑,死狀恐怖锯茄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茶没,我是刑警寧澤肌幽,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站抓半,受9級特大地震影響喂急,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜笛求,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一廊移、第九天 我趴在偏房一處隱蔽的房頂上張望糕簿。 院中可真熱鬧,春花似錦狡孔、人聲如沸懂诗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽殃恒。三九已至,卻和暖如春辱揭,著一層夾襖步出監(jiān)牢的瞬間离唐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工界阁, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留侯繁,地道東北人。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓泡躯,卻偏偏與公主長得像贮竟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子较剃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

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

  • 一咕别、WebView 谷歌提供的系統(tǒng)組件,用來加載和展現(xiàn)html網(wǎng)頁写穴,其采用webkit內(nèi)核驅(qū)動惰拱,來實現(xiàn)網(wǎng)頁瀏覽功能...
    閑庭閱讀 6,949評論 2 12
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,070評論 25 707
  • WebView全面解析 簡介 WebView是android中一個非常重要的控件,它的作用是用來展示一個web頁面...
    TokyoZ閱讀 140,701評論 4 94
  • 1 多年來,由于種種原因馋没,頸椎病就纏上了我昔逗。 自2002年以來,為治療此病篷朵,本人用過各種方法:物理的牽引勾怒、按摩、理...
    美文_b679閱讀 1,139評論 1 4
  • 《喚醒內(nèi)在天才的秘密》 作者:李勝杰声旺、林青賢 營養(yǎng)早餐(20180222) ——《喚醒內(nèi)在天才的秘密》摘錄: (3...
    覺之燈閱讀 185評論 0 0