Android webViewブロックurl

11483 ワード

AndroidがwebViewを呼び出してWebページをロードする場合、あるリンクがこのリンクを実行しないことをブロックし、指定を実行して他のactivityページにジャンプする必要があります.WebviewのsetWebViewClientメソッドには、いくつかのapiがあります.
    //             url  ,     url     (      )
public WebResourceResponse shouldInterceptRequest(WebView view, String url) 

//               ,       true                 webview   ,        。             ,            URL,          ,      ,           ,            。
public boolean shouldOverrideUrlLoading(WebView view, String url)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

  • だから私のニーズはshouldOverrideUrlLoadingメソッドで処理することです
    webView.setWebViewClient(new WebViewClient() {
    
                @Override
                //               ,       true                 webview   ,        。             ,            URL,          ,      ,           ,            。
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    //   url           ,           (     url  ),       url  
                    if (url.contains("/mproduct-")) {
                        Intent i = new Intent(MainActivity.this, MainActivity.class);
                        startActivity(i);
                        return true;
                    } else {
                        return false;
                    }
                }
            });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

  • Webviewのその他の設定
    //     ,       ,       
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
                webView.goBack();//        
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • @Override
        protected void onDestroy() {
            super.onDestroy();
            //  webview  
            webView.clearCache(true);
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • private void initView() {
            webView = (WebView) findViewById(R.id.webView);
            WebSettings settings = webView.getSettings();
            settings.setJavaScriptEnabled(true);
            settings.setBuiltInZoomControls(true);//       
            settings.setSupportZoom(false);//      
            settings.setUseWideViewPort(false);//         webview  
            settings.setLoadWithOverviewMode(true);//         
            settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//    
    
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

  • WebSettingsの一般的な方法の紹介:
    setJavaScriptEnabled(true);  //  js
        setPluginsEnabled(true);  //     
        setUseWideViewPort(false);  //        webview    
        setSupportZoom(true);  //     
        setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //          
        supportMultipleWindows();  //    
        setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);  //  webview    
        setAllowFileAccess(true);  //         
        setNeedInitialFocus(true); // webview  requestFocus  webview    
        webview webSettings.setBuiltInZoomControls(true); //       
        setJavaScriptCanOpenWindowsAutomatically(true); //    JS      
        setLoadWithOverviewMode(true); //         
        setLoadsImagesAutomatically(true);  //        
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

  • WebViewClientの方法の全解:
    doUpdateVisitedHistory(WebView view, String url, boolean isReload)  //(      ) 
    onFormResubmission(WebView view, Message dontResend, Message resend) //(            ) 
    onLoadResource(WebView view, String url) //            ,     (    )         。 
    onPageStarted(WebView view, String url, Bitmap favicon) //               ,            loading   ,             。 
    onPageFinished(WebView view, String url) //          。    ,            ,        loading  ,      。 
    onReceivedError(WebView view, int errorCode, String description, String failingUrl)// (      ) 
    onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host,String realm)//(          ) 
    onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) //        webview  https  。
    onScaleChanged(WebView view, float oldScale, float newScale) // (WebView       ) 
    onUnhandledKeyEvent(WebView view, KeyEvent event) //(Key         ) 
    shouldOverrideKeyEvent(WebView view, KeyEvent event)//                    。 
    shouldOverrideUrlLoading(WebView view, String url) 
    //              ,       true                 webview   ,        。             ,            URL,          ,      ,           ,            。