不多说直接上代码:

1、activity 的onCreate 方法,从布局中得到WebView引用,并设置相关参数

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    webView = (WebView) findViewById(R.id.web_view);    webView.loadUrl("http://www.baidu.com");    webView.setWebViewClient(new MyWebViewClient());    webView.setWebChromeClient(new WebChromeClient());}

2、MyWebViewClient 继承WebViewClient,并重写public boolean shouldOverrideUrlLoading(WebView view, String url)方法。简单的说就是,通过HttpClient 来请求URL,获取到相应的response,从response中就可以得到所有你想要的数据了;当然,要通过WebView.loadData()方法将response的entity加载到WebView中,这样控件才能显示web页面:

private class MyWebViewClient extends WebViewClient {    @Override    public boolean shouldOverrideUrlLoading(WebView view, String url) {        Log.d("info", "===>>> shouldOverrideUrlLoading method is called!");        // TODO Auto-generated method stub        URL local_url;        URLConnection connection;        try {            local_url = new URL(url);            connection = local_url.openConnection();            connection.setConnectTimeout(15000);            connection.connect();        } catch (Exception e) {}        final HttpGet httpGet = new HttpGet(url);        Thread theard = new Thread(new Runnable() {            @Override            public void run() {                // TODO Auto-generated method stub                try {                    HttpResponse response;                    String htmlContent;                    HttpClient httpClient = new DefaultHttpClient();                    response = httpClient.execute(httpGet);                    if (response.getStatusLine().getStatusCode() == 200) {                        Header[] headers = response.getAllHeaders();                        for (Header header : headers) {                            String name = header.getName();                            String value = header.getValue();                            Log.d("info", "===>>> name:" + name);                            Log.d("info", "===>>> value:" + value);                        }                        HttpEntity entity = response.getEntity();                        if (entity != null) {                            InputStream inputStream = entity.getContent();                            htmlContent = convertToString(inputStream);                            Log.d("info", "===>>> htmlContent:" + htmlContent);                            webView.loadData(htmlContent, "text/html", "utf-8");                        }                    }                } catch (Exception e) {                };            }        });        theard.start();

// view.loadData(htmlContent, “text/html”, “utf-8”);

        return true;        // return super.shouldOverrideUrlLoading(view, url);    }    public String convertToString(InputStream inputStream) {        StringBuffer string = new StringBuffer();        BufferedReader reader = new BufferedReader(new InputStreamReader(                inputStream));        String line;        try {            while ((line = reader.readLine()) != null) {                string.append(line + "\n");            }        } catch (IOException e) {        }        return string.toString();    }}

注:我不是Java开发者,也不是Android开发者,代码写的丑的地方将就着看;另,欢迎扔砖…… _

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android(安卓)仿微信滑动删除
  3. Android(安卓)给图片、文字、控件、布局添加阴影效果(悬浮效果)
  4. Android之Fragment动态加载、Fragment与Activity传值通信
  5. [Android(安卓)Pro] ListView,GridView之LayoutAnimation特殊动
  6. SQLite的query方法,注意检查参数args中是否含null值
  7. Android与JS之间的互调
  8. 自定义时间控件
  9. Android国内一些比较知名的大牛

随机推荐

  1. Android学习笔记(20):时钟(AnalogClock和
  2. android 的反编译与防反编译
  3. 为 Android(安卓)平台开发一个输入法
  4. Android(安卓)-- Messager与Service
  5. getDrawable()缓存带来的问题
  6. Android(安卓)查看蓝牙日志
  7. Android进程优先级部分整理与理解
  8. 重学 Android(安卓)面试题
  9. 黑马Android全套视频无加密完整版
  10. Android(安卓)ImageView设置图片原理