真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

AndroidWebView攔截iframe標(biāo)簽內(nèi)部跳轉(zhuǎn)的示例分析

小編給大家分享一下Android WebView攔截iframe標(biāo)簽內(nèi)部跳轉(zhuǎn)的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

泗洪網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。成都創(chuàng)新互聯(lián)公司成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

Android是什么

Android是一種基于Linux內(nèi)核的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機(jī)和平板電腦,由美國Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。

最近項目里有個廣告位需要動態(tài)配置,后臺給了一段 html 嵌套iframe標(biāo)簽的代碼,需要Android攔截iframe內(nèi)部的跳轉(zhuǎn),自己做處理。

比如,下面是一段html代碼,嵌套這iframe標(biāo)簽,src就是跳轉(zhuǎn)地址,我現(xiàn)在就要當(dāng)你點擊該網(wǎng)址的時候做攔截,自己做處理而不是跳轉(zhuǎn)。

 


oh,我還是第一次知道iframe標(biāo)簽,不過想著應(yīng)該和普通攔截h6差不多,興致勃勃的就開始擼代碼了,但是無論怎么配置WebView,還是重寫 shouldOverrideUrlLoading ,就是攔截不了iframe里的網(wǎng)址。。。后來研(bai)究(du)了很久,終于攔截到了。

實現(xiàn)方法:

首先,你的WebView要 setWebViewClient ,重寫

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {} 方法,然后setWebChromeClient,重寫onCreateWindow方法,在里面創(chuàng)建新的WevView,加入到webView里,給新的webView setWebViewClient,再重寫shouldVeerrideUrlLoading方法,在這里攔截。
  webView.setWebChromeClient(new WebChromeClient(){
   
   @Override
   public boolean onCreateWindow(WebView webView, boolean isDialog, boolean isUserGesture, Message resultMsg) {
    WebView newWebView = new WebView(getActivity());
    webView.addView(newWebView);
 
    WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
    transport.setWebView(newWebView);
    resultMsg.sendToTarget();
 
    newWebView.setWebViewClient(new WebViewClient(){
 
     @Override
     public boolean shouldOverrideUrlLoading(WebView webView, String url) {
      //TODO 在這里實現(xiàn)你的攔截方法
      if (url.contains("https://www.jb51.net")){
       toast("攔截到了" + url);
       Intent intent = new Intent(getActivity(), CommonWebViewActivity.class);
       intent.putExtra("url",url);
       startActivity(intent);
 
      }else {
       webView.loadUrl(url);
      }
      return true;
     }
    });
 
    return true;
   }
  });

完整的代碼如下:

private void initWebView(WebView webView) {
  //啟用支持javascript
  WebSettings settings = webView.getSettings();
  settings.setJavaScriptEnabled(true);
  settings.setJavaScriptCanOpenWindowsAutomatically(true);
  settings.setSupportZoom(false); //支持縮放
  settings.setBuiltInZoomControls(false); //支持手勢縮放
  settings.setDisplayZoomControls(false); //是否顯示縮放按鈕
  settings.setDefaultTextEncodingName("utf-8"); //設(shè)置文本編碼
  settings.setUseWideViewPort(false); //將圖片調(diào)整到適合WebView的大小
  settings.setLoadWithOverviewMode(true); //自適應(yīng)屏幕
  settings.setDomStorageEnabled(true);
  settings.setSaveFormData(true);
  settings.setSupportMultipleWindows(true);
  settings.setAppCacheEnabled(true);
  settings.setPluginState(WebSettings.PluginState.ON);//支持插件
  settings.setCacheMode(WebSettings.LOAD_NO_CACHE); //不適用緩存
  settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);//支持內(nèi)容重新布局
  webView.setOverScrollMode(View.OVER_SCROLL_NEVER); // 取消WebView中滾動或拖動到頂部、底部時的陰影
  webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); // 取消滾動條白邊效果
  // >= 19(SDK4.4)啟動硬件加速,否則啟動軟件加速
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
   webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
   settings.setLoadsImagesAutomatically(true); //支持自動加載圖片
  } else {
   webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
   settings.setLoadsImagesAutomatically(false);
  }
 
  webView.setWebViewClient(new WebViewClient() {
   @Override
   public void onLoadResource(WebView view, String url) {
    super.onLoadResource(view, url);
    Log.w("webView==onLoadResource===url=" + url);
   }
 
   @Override
   public void onReceivedSslError(WebView webView, SslErrorHandler sslErrorHandler, SslError sslError) {
    sslErrorHandler.proceed(); // 接受所有網(wǎng)站的證書
   }
 
   @Override
   public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
    
    if (request.getUrl().toString().contains("http://www.baidu.com")){
     toast("攔截到了baidu");
     
    }else {
     webView.loadUrl(request.getUrl().toString());
    }
 
    return true;
   }
  });
 
  webView.setWebChromeClient(new WebChromeClient(){
   
   @Override
   public boolean onCreateWindow(WebView webView, boolean isDialog, boolean isUserGesture, Message resultMsg) {
    WebView newWebView = new WebView(getActivity());
    webView.addView(newWebView);
 
    WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
    transport.setWebView(newWebView);
    resultMsg.sendToTarget();
 
    newWebView.setWebViewClient(new WebViewClient(){
 
     @Override
     public boolean shouldOverrideUrlLoading(WebView webView, String url) {
      
      if (url.contains("http://www.jb51.net")){
       toast("攔截到了" + url);
       Intent intent = new Intent(getActivity(), CommonWebViewActivity.class);
       intent.putExtra("url",url);
       startActivity(intent);
 
      }else {
       webView.loadUrl(url);
      }
      return true;
     }
    });
 
    return true;
   }
  });
 }

以上是“Android WebView攔截iframe標(biāo)簽內(nèi)部跳轉(zhuǎn)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


文章標(biāo)題:AndroidWebView攔截iframe標(biāo)簽內(nèi)部跳轉(zhuǎn)的示例分析
鏈接URL:http://weahome.cn/article/jcseip.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部