android webview知识积累

1、如果访问的页面中有Javascript,则webview必须设置支持Javascript。

mWebView.getSettings().setJavaScriptEnabled(true);

2、如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。

mWebView.setWebViewClient(new WebViewClient(){ 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        view.loadUrl(url); 
        return true; //返回true,代表事件已处理,事件流到此终止
    } 
});

3、如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。

public boolean onKeyDown(int keyCode, KeyEvent event) {       
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {       
            mWebView.goBack();       
                   return true;       
        }       
        return super.onKeyDown(keyCode, event);       
    }

4、如果webView中需要用户手动输入用户名、密码或其他,则webview必须设置支持获取手势焦点。

mWebView.requestFocusFromTouch();

5、重写WebChromeClient的onProgressChanged方法更新进度条。

mWebView.setWebChromeClient(new WebChromeClient() {
            //当WebView进度改变时更新窗口进度
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                //Activity的进度范围在0到10000之间,所以这里要乘以100
                LoadActivity.this.setProgress(newProgress * 100);
            }
});

 6、使WebView支持点击下载链接可跳转。

        mWebView.setDownloadListener(new DownloadListener()
        {
            @Override
            public void onDownloadStart(String url , String userAgent , String contentDisposition , String mimetype , long contentLength)
            {
                // TODO Auto-generated method stub
                Uri uri = Uri.parse(url);
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                startActivity(intent);
            }
        });

 

posted @ 2014-08-12 13:13  ysl_longer  阅读(297)  评论(0编辑  收藏  举报