Android中監聽Phonegap的webview的start,finish等事件

來源:互聯網
上載者:User

之前寫過一篇捕獲Phoengap的webview事件的方法,主要是在實現了CordovaInterface的Activity中,  在onMessage中根據第一個參數的message name來判斷webview的載入事件。不過如果是在Fragment中,一個Activity載入了多個包含了WebView的fragment的話,就無法在onMessage中判斷到底是哪個WebView的載入事件。

經過嘗試,發現,還是可以使用setWebViewClient的方式來,來重寫WebViewClient的對應的onPageStart和onPageFinish等方法來處理載入事件


[java]
CordovaWebView webView = (CordovaWebView)findViewById(R.id.webView); 

 CordovaWebView webView = (CordovaWebView)findViewById(R.id.webView);[java] view plaincopyprint?CordovaInterface cordovaInterface = (CordovaInterface) context; 
 
       CordovaWebViewClient cordovaWebViewClient = new CordovaWebViewClient(cordovaInterface, webView) { 
           @Override 
           public void onPageStarted(WebView view, String url, Bitmap favicon) { 
 
               LogUtil.debug("onPageStarted " + url); 
               super.onPageStarted(view, url, favicon); 
               progressBar.setVisibility(View.VISIBLE); 
           } 
 
           @Override 
           public void onPageFinished(WebView view, String url) { 
               LogUtil.debug("onPageFinished " + url); 
               super.onPageFinished(view, url); 
               progressBar.setVisibility(View.GONE); 
           } 
 
           @Override 
           public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
               LogUtil.debug("onReceivedError " + url); 
               super.onReceivedError(view, errorCode, description, failingUrl); 
               progressBar.setVisibility(View.GONE); 
               errorView.setVisibility(View.VISIBLE); 
           } 
       }; 
       webView.setWebViewClient(cordovaWebViewClient); 
 
       webView.loadUrl(url); 

 CordovaInterface cordovaInterface = (CordovaInterface) context;

        CordovaWebViewClient cordovaWebViewClient = new CordovaWebViewClient(cordovaInterface, webView) {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {

                LogUtil.debug("onPageStarted " + url);
                super.onPageStarted(view, url, favicon);
                progressBar.setVisibility(View.VISIBLE);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                LogUtil.debug("onPageFinished " + url);
                super.onPageFinished(view, url);
                progressBar.setVisibility(View.GONE);
            }

            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                LogUtil.debug("onReceivedError " + url);
                super.onReceivedError(view, errorCode, description, failingUrl);
                progressBar.setVisibility(View.GONE);
                errorView.setVisibility(View.VISIBLE);
            }
        };
        webView.setWebViewClient(cordovaWebViewClient);

        webView.loadUrl(url);

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.