1:在AndroidManifest.xml中添加允许android访问网络权限。

<uses-permission android:name="android.permission.INTERNET"/>

2:activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</RelativeLayout>

3:MainActivity

public class MainActivity extends Activity {
  private WebView webView=null;
  private String url="http://www.baidu.com";
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    webView=(WebView)findViewById(R.id.webView);
    webView.loadUrl(url);

    //设置支持JS or Flash
    WebSettings webSettings=webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setPluginState(WebSettings.PluginState.ON);

    //继续让其他网页显示在WebView中
    webView.setWebViewClient(new WebViewClient(){
      public boolean shouldOverrideUrlLoading(WebView view,String url){
        view.loadUrl(url);
        return true;
      }

    });
  }

}

4:运行界面如下。

WebView不仅可以显示URL网页内容,还可以将服务端传递过来的HTML+CSS片段展现出来例如:

webView.loadDataWithBaseURL(null, str, "text/html", "UTF-8", null);

WebView将assets文件夹下面的html文件展现出来:

webView.loadUrl("file:///android_asset/html/"+index+".html");

WebView中常见的错误:

(1):Error

Activity com.wzh.activity.BsznContent has leaked IntentReceiver
com.android.qualcomm.browsermanagement.BrowserManagement$1@4196c878 that was

originally registered here. Are you missing a call to unregisterReceiver()?

解决方法:不要在XML布局中直接编写WebView的XML布局代码,在代码中编写,将其添加到一个父容器中,例如:

llXxsdWebView = (LinearLayout)findViewById(R.id.llXxsdWebView);
webView = new WebView(getApplicationContext());
llXxsdWebView.addView(webView);

在onDestroy()方法中:将WebView移除,以及WebView中的所有VIew移除,最后将WebView销毁。

protected void onDestroy() {
super.onDestroy();
if(null != webView){
llXxsdWebView.removeAllViews();
webView.removeAllViews();
webView.destroy();
}
}

(2):Error

Error: WebView.destroy() called while still attached!

参考:http://stackoverflow.com/questions/11995270/error-webview-destroy-called-while-still-attached

类似(1)中的写法:

webViewPlaceholder.removeView(myWebView);
myWebView.removeAllViews();
myWebView.destroy();

(3):Warning

skip viewSizeChanged as w is 0

参考:http://stackoverflow.com/questions/5582530/android-what-does-this-warning-message-refer-to-webcore

WebView mWebView =(WebView) findViewById(R.id.webview);
mWebView.getSettings().setBuiltInZoomControls(true);

总结:对于Android4.0.4在使用 WebView时会出现许多意想不到的问题,相比较Android4.2.2就会好许多。我在Android4.2.2平台上使用WebView,在Logcat下没有报道任何错误异常,而在使用Android4.0.4测试时直接挂掉了。

Android 之 WebView的更多相关文章

  1. Android中webView和网页的交互

     Android中webView和网页的交互 Android中webView跟网页的交互式通过JavaScript进行的.具体步骤: 1.创建JavaScript,在点击的时候调用JavaScript ...

  2. Android 显示 WebView ,加载URL 时,向webview的 header 里面传递参数

    1.主要布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:and ...

  3. Android中Webview使用自定义的javascript进行回调

    先说为什么需要讨论这个问题. 现在很多的手机应用,都可能会直接嵌入一个web页面.这样做的好处:一个是功能更新方便,维护起来容易,只需要维护服务器的页面即可,不需要更新客户端:另一个是功能通用,不仅a ...

  4. android使用Webview上传图片

    package com.example.webview; import java.io.File; import android.net.Uri;import android.os.Bundle;im ...

  5. Android之 -WebView实现离线缓存阅读

    前言 本篇博客要实现的是一个离线下载和离线阅读的功能,这是很多阅读类app都常见的一个功能,典型的应用就是网易新闻.什么是离线下载?其实这个概念是比较模糊,是离线之后下载呢,还是下载之后离线,但稍微有 ...

  6. 在Android的webview中定做js的alert,confirm和prompt对话框的方法

    在Android的webview中定制js的alert,confirm和prompt对话框的方法 http://618119.com/archives/2010/12/20/199.html 1.首先 ...

  7. Android 响应webview中图片的点击事件

    最近碰到个新需求需要点击webview中的图片进行放大显示. 整理了下思路,想到了下面的一个可行的方案. 方案思路, 1.在点击图片的时候调用本地的java方法并给出响应的图片地址 2.本地获得图片地 ...

  8. android利用WebView实现浏览器的封装

    android提供了封装浏览器的接口,可以让开发者利用自己的view显示网页内容.今天又实现研究了一下,利用WebView显示浏览器内容,还可以利用 WebViewClient显示自己需要的内容. 参 ...

  9. [原][Android]All WebView methods must be called on the same thread.

    问题 webView调用JS出错. class TestJS {         ......         public TestJS(){         }                   ...

  10. android使用webview加载flash文件

    android 字段webview几乎实现了浏览器的全部功能,最近在使用webview加载不固定格式的文章,文章中有一部分嵌入了flash,下面就是webview可以进行视频需要进行的设置,代码如下: ...

随机推荐

  1. 数位DP初步 bzoj1026 hdu2089 hdu3555

    为了搞SCOI的几道题先做水数位.之前听过课,半懂不懂吧,现在清楚了些. 这类题一般满足区间减法,即只需要我们求出(1,n)即可,然后打表也是为了sovle(DataType)服务.先想好怎么计算,再 ...

  2. dubbo源码分析一:整体分析

    本文作为dubbo源码分析的第一章,先从总体上来分析一下dubbo的代码架构.功能及优缺点,注意,本文只分析说明开源版本提供的代码及功能. 1.dubbo的代码架构:  spring适配层:常规的sp ...

  3. Linq to sql并发与事务

    本文转载:http://www.cnblogs.com/lovecherry/archive/2007/08/20/862365.html 检测并发 首先使用下面的SQL语句查询数据库的产品表: se ...

  4. java自定义对话框

    package com.matp.view; import java.awt.FlowLayout; public class SimpleDialog extends JDialog impleme ...

  5. [Javascript] Advanced Console Log Arguments

    Get more mileage from your console output by going beyond mere string logging - log entire introspec ...

  6. (转)cocos2dx 内存管理

    原文地址:http://blog.csdn.net/ring0hx/article/details/7946397 cocos2dx的内存管理移植自Objective-C, 对于没有接触过OC的C++ ...

  7. .NET aspx页面中的按钮无法响应事件

    原因只有一个,页面中存在多个form标签.按Ctrl+F,找到多余的删掉即可

  8. webconfig的设置节点几个说明

    有助于深入理解webconfig <?xml version="1.0" encoding="utf-8" ?> <configuration ...

  9. 关于模板中的动态取值 ---反射与javascript脚本编译

    在项目中经常遇到一个问题,打印word或者打印excel的时候,我们经常使用一对一的赋值或者批量替换的方式来对模板进行修改. 但是现在遇到两种场景: 1.取值是通过自定以方法进行取值的. 如:一个销售 ...

  10. MySQL 元数据

    MySQL 元数据 你可能想知道MySQL以下三种信息: 查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数. 数据库和数据表的信息: 包含了数据库及数据表的结构信息. M ...