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. jQuery常用事件详解

    window.onload:在浏览器加载web页面时触发,可以写多次onload事件,但后者覆盖前者 ready:在浏览器加载web页面时触发,可以写多次ready事件,不会后者覆盖前者,依次从上向下 ...

  2. quartz 的学习和使用。

    任务调度器, 定时任务,保存好后会被放入触发器,这些触发器被存入到数据库,调度器线程扫描,如果有待触发的打开锁,拿到job信息,更改trigger信息,释放锁,返回所有的trigger列表,再 按照时 ...

  3. SetupFactory +添加frm2.0工具

    网盘链接: http://pan.baidu.com/s/1c1DFRJM 带单独的添加frm2.0工具 原setupfactory文件下载地址:http://www.pc0359.cn/downin ...

  4. 页游AS客户端架构设计历程记录

    以下是一个只用JAVA做过服务器架构的程序员做的AS客户端架构,希望大家能推荐好的框架和意见,也求AS高程们的引导,等到基本功能成形后,低调开源,框架可以支持一个中度型页游的开发,本文不断更新中... ...

  5. ASP.NETserver控件使用之Reportviewer 报表

    1.       Reportviewer 报表 1.1.       Reportviewer控件 注:本教程附2个事例: l  演练:在本地处理模式下将数据库数据源与 ReportViewer W ...

  6. Android RecyclerView 瀑布流

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...

  7. FFmpeg的HEVC解码器源码简单分析:解析器(Parser)部分

    ===================================================== HEVC源码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpeg ...

  8. android ContentProvider学习

    1.ContentProvider提供位存储或获取数据提供了统一的接口. 2.使用ContentProvider可以在不同的应用程序之间共享数据. 3.Android为常见的一些数据提供了Conten ...

  9. NYOJ-520 最大素因子

    这个题基本上就两个知识点, 一个素数筛选法求素数,另一个是求最大公因子, 不过确定最大素数在素数表中的位置时,要用到二分的思想,不然会超时,下面是具体代码的实现; #include <stdio ...

  10. HTML5之部分显示