Android WebView 详细介绍

WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页。

相关:

1、添加权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。

2、在要Activity中生成一个WebView组件:WebView webView = new WebView(this);
3、设置WebView基本信息:
如果访问的页面中有Javascript,则webview必须设置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true); 
触摸焦点起作用
requestFocus();
取消滚动条
this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);

 4、设置WevView要显示的网页:
互联网用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html");  本地文件存放在:assets文件中
5、如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。
给WebView添加一个事件监听对象(WebViewClient) ,并重写其中的一些方法
shouldOverrideUrlLoading:对网页中超链接按钮的响应。
  当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url
onLoadResource  
onPageStart 
onPageFinish 
onReceiveError
onReceivedHttpAuthRequest
6、如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。
覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。

public boolean onKeyDown(int keyCoder,KeyEvent event){
    if(webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK){
           webview.goBack();   //goBack()表示返回webView的上一页面
            return true;
     }

return false;

-------------------------------------------------------------------------------------

Android的webview加载本地html、本apk内html和远程URL

//打开本包内asset目录下的index.html文件
wView.loadUrl(" file:///android_asset/index.html ");

//打开本地sd卡内的index.html文件
wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");

//打开指定URL的html文件
wView.loadUrl(" http://m.oschina.net");

-------------------------------------------------------------------------------------

来个例子:

实现WebView有以下两种不同的方法:
第一种方法的步骤:
1.在要Activity中实例化WebView组件:WebView webView = new WebView(this);
2.调用WebView的loadUrl()方法,设置WevView要显示的网页:
   互联网用:webView.loadUrl("http://www.google.com");
   本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.调用Activity的setContentView( )方法来显示网页视图
4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。
   <uses-permission android:name="android.permission.INTERNET" />
下面是具体例子:
MainActivity.java

01 package com.android.webview.activity;
02
03 import android.app.Activity;
04 import android.os.Bundle;
05 import android.view.KeyEvent;
06 import android.webkit.WebView;
07
08 public class MainActivity extends Activity {
09     private WebView webview;
10     @Override
11     public void onCreate(Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13         //实例化WebView对象
14         webview = new WebView(this);
15         //设置WebView属性,能够执行Javascript脚本
16         webview.getSettings().setJavaScriptEnabled(true);
17         //加载需要显示的网页
18         webview.loadUrl("http://www.51cto.com/");
19         //设置Web视图
20         setContentView(webview);
21     }
22     
23     @Override
24     //设置回退
25     //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
26     public boolean onKeyDown(int keyCode, KeyEvent event) {
27         if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
28             webview.goBack(); //goBack()表示返回WebView的上一页面
29             return true;
30         }
31         return false;
32 }

在AndroidManifest.xml文件中的17行添加权限

01 <?xml version="1.0" encoding="utf-8"?>
02 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
03       package="com.android.webview.activity"
04       android:versionCode="1"
05       android:versionName="1.0">
06     <uses-sdk android:minSdkVersion="10" />
07
08     <application android:icon="@drawable/icon" android:label="@string/app_name">
09         <activity android:name=".MainActivity"
10                   android:label="@string/app_name">
11             <intent-filter>
12                 <action android:name="android.intent.action.MAIN" />
13                 <category android:name="android.intent.category.LAUNCHER" />
14             </intent-filter>
15         </activity>
16     </application>
17     <uses-permission android:name="android.permission.INTERNET"/>
18 </manifest>

效果图:

第二种方法的步骤:
1、在布局文件中声明WebView
2、在Activity中实例化WebView
3、调用WebView的loadUrl( )方法,设置WevView要显示的网页
4、为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置  WebView视图
5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
6、需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET"/>
  下面是具体的例子:
MainActivity.java

01 package com.android.webview.activity;
02
03 import android.app.Activity;
04 import android.os.Bundle;
05 import android.view.KeyEvent;
06 import android.webkit.WebView;
07 import android.webkit.WebViewClient;
08
09 public class MainActivity extends Activity {
10     private WebView webview;
11     @Override
12     public void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.main);
15         webview = (WebView) findViewById(R.id.webview);
16         //设置WebView属性,能够执行Javascript脚本
17         webview.getSettings().setJavaScriptEnabled(true);
18         //加载需要显示的网页
19         webview.loadUrl("http://www.51cto.com/");
20         //设置Web视图
21         webview.setWebViewClient(new HelloWebViewClient ());
22     }
23     
24     @Override
25     //设置回退
26     //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
27     public boolean onKeyDown(int keyCode, KeyEvent event) {
28         if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
29             webview.goBack(); //goBack()表示返回WebView的上一页面
30             return true;
31         }
32         return false;
33     }
34     
35     //Web视图
36     private class HelloWebViewClient extends WebViewClient {
37         @Override
38         public boolean shouldOverrideUrlLoading(WebView view, String url) {
39             view.loadUrl(url);
40             return true;
41         }
42     }
43 }

main.xml

01 <?xml version="1.0" encoding="utf-8"?>
02 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03     android:orientation="vertical"
04     android:layout_width="fill_parent"
05     android:layout_height="fill_parent"
06     >  
07     <WebView
08         android:id="@+id/webview"
09         android:layout_width="fill_parent"
10         android:layout_height="fill_parent"
11         />
12 </LinearLayout>

在AndroidManifest.xml文件中的17行添加权限

01 <?xml version="1.0" encoding="utf-8"?>
02 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
03       package="com.android.webview.activity"
04       android:versionCode="1"
05       android:versionName="1.0">
06     <uses-sdk android:minSdkVersion="10" />
07
08     <application android:icon="@drawable/icon" android:label="@string/app_name">
09         <activity android:name=".MainActivity"
10                   android:label="@string/app_name">
11             <intent-filter>
12                 <action android:name="android.intent.action.MAIN" />
13                 <category android:name="android.intent.category.LAUNCHER" />
14             </intent-filter>
15         </activity>
16     </application>
17     <uses-permission android:name="android.permission.INTERNET"/>
18 </manifest>

效果图:

更多可以参考:http://www.oschina.net/android/43/

Android WebView 详细介绍相关推荐

  1. Android WebView简要介绍和学习计划

    我们通常会在App的UI中嵌入WebView,用来实现某些功能的动态更新.在4.4版本之前,Android WebView基于WebKit实现.不过,在4.4版本之后,Android WebView就 ...

  2. Android:adb 详细介绍

    adb 详细介绍 2018年03月15日 15:34:54 yulle 阅读数:15228更多 个人分类: adb ADB,即 Android Debug Bridge,它是 Android 开发/测 ...

  3. android webview详情,Android中的WebView详细介绍

    Android中WebView的详细解释: 1. 概念: WebView(网络视图)能加载显示网页,可以将其视为一个浏览器.它使用了WebKit渲染引擎加载显示网页. 2. 使用方法: (1).实例化 ...

  4. Android ART详细介绍及配置参数详解

    配置 ART 本文介绍了如何配置 ART 及其编译选项.讨论的主题包括:系统映像预编译配置.dex2oat 编译选项,以及如何在 system 分区空间.data 分区空间和性能这三者之间取得平衡. ...

  5. android parcelable 详细介绍

    想要在两个activity之间传递对象,那么这个对象必须序列化,Android中序列化一个对象有两种方式,一种是实现Serializable接口,这个非常简单,只需要声明一下就可以了,不痛不痒.但是a ...

  6. android WebView详解,常见漏洞详解和安全源码(上)

    这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析.  由于博客内容长度,这次将分为上下两篇,上篇详解 WebView ...

  7. android WebView详解,常见漏洞详解和安全源码

    这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析. 转载请注明出处:blog.csdn.net/self_study ...

  8. Android --- AndroidManifest.xml文件内容详细介绍

    文章目录 1.android:label="@string/app_name" 2. android:icon="@mipmap/ic_launcher"与an ...

  9. Android底层隐私数据,Android Intent传递数据底层分析详细介绍_Android_脚本之家

    Android  Intent传递数据底层分析详细介绍 我们知道在Activity切换时,如果需要向下一个ActivityB传递数据,可以借助Intent对象的putExtra方法. 但是不知各位有没 ...

  10. Android多开和虚拟化--Docker概念的详细介绍

    本文只是对Docker的概念做了较为详细的介绍,并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令. 通过阅读本文你将知道以下概念: 容器 什么是Docker? Docker思想 ...

最新文章

  1. 2022-2028年中国滑雪产业投资分析及前景预测报告(全卷)
  2. 写一手好 SQL 很有必要
  3. 数据更改后推送_合格的数据科学家,这些Github知识必须了解
  4. Stomp-Spring服务器端的Web套接字Java客户端
  5. SpringBoot:Could not autowire there is more than one bean of xx type
  6. 进行连续心率监测可以诊断哪些疾病?
  7. unix线程死锁概念与解决
  8. 十六种CAD.CAE.CAM软件介绍
  9. 数字共享平台赋能船舶行业数字化转型——CSBC,搭建行业数字生态链
  10. 每天学命令get_property
  11. sails 数据库字段
  12. [Python] 你的BMI是多少呢?
  13. 火焰识别python_基于Python的火焰识别程序
  14. 洛谷P5274 优化题(ccj)
  15. 哈希表除留取余法的桶个数为什么是质数
  16. 微服务入门篇(二),万字长文带你实操作SpringCloudAlibaba微服务组件
  17. 0689 ZOJ - 4128
  18. 长尾词挖掘免费工具-长尾关键词挖掘词
  19. 练习C++简单的代码
  20. PLC实验:水塔水位控制

热门文章

  1. FDDB数据集标注文件:椭圆转换矩形
  2. STARK Arithmetization
  3. 【网络技术题库整理4】IP地址规划技术
  4. 2、那智机器人时序基板的TBEX1、TBEX2连接
  5. 设计模式之中介者模式
  6. plsql导出单表数据
  7. 信息技术 用计算机做科学实验报告,8.用计算机做科学实验.doc
  8. 不想下载那么多音乐软件?全网音乐在线听和下载
  9. 在线vip全网音乐搜索下载源码
  10. OSEK 操作系统的基本概念