Android WebView

Android WebView ( 网页浏览 ) 控件主要用于在 Android APP 中加载 HTML 网页

WebView

WebView 是 Android 内置的基于 Chromium 封装一个浏览器控件

WebView 提供了以下几个方法用于加载网页内容

  1. loadUrl()

    直接显示网页内容(单独显示网络图片),一般不会出现乱码

  2. loadData(data, "text/html", "UTF-8")

    用来加载 URI 格式的数据,不能通过网络来加载内容,不能加载图片,而且经常会遇到乱码的问题

  3. loadDataWithBaseURL(baseUrl, string, "text/html", "utf-8", null)

    loadData() 的增强版,可以加载图片,baseUrl 为存储的图片路径

WebChromeClient

WebChromeClient 是 辅助 WebView 处理 Javascript 的对话框、网站图标、网站 title、加载进度等

WebChromeClient 提供了以下方法

方法 说明
onJsAlert(WebView view,String url,String message,JsResult result) 处理Js中的Alert对话框
onJsConfirm(WebView view,String url,String message,JsResult result) 处理Js中的Confirm对话框
onJsPrompt(WebView view,String url,String message,String defaultValue,JsPromptResult result) 处理Js中的Prompt对话框
onProgressChanged(WebView view,int newProgress) 当加载进度条发生改变时调用
onReceivedIcon(WebView view, Bitmap icon) 获得网页的icon
onReceivedTitle(WebView view, String title) 获得网页的标题

WebViewClient

WebViewClient 是辅助 WebView 处理各种通知与请求事件

WebViewClient 提供了以下几个方法

方法 说明
onPageStared(WebView view,String url) 通知主程序网页开始加载
onPageFinished(WebView view,String url,Bitmap favicon) 通知主程序,网页加载完毕
doUpdateVisitedHistory(WebView view,String url,boolean isReload) 更新历史记录
onLoadResource(WebView view,String url) 通知主程序WebView即将加载指定url的资源
onScaleChanged(WebView view,float oldScale,float newScale) ViewView的缩放发生改变时调用
shouldOverrideKeyEvent(WebView view,KeyEvent event) 控制webView是否处理按键时间,如果返回true,则WebView不处理,返回false则处理
shouldOverrideUrlLoading(WebView view,String url) 控制对新加载的Url的处理,返回true,说明主程序处理WebView不做处理,返回false意味着WebView会对其进行处理
onReceivedError(WebView view,int errorCode,String description,String failingUrl) 遇到不可恢复的错误信息时调用

WebSettings

WebSettings 是 WebView 相关配置的设置,比如 setJavaScriptEnabled()设置是否允许 JavaScript 脚本执行

WebSettings 提供了以下几个方法

方法 说明
getSettings() 返回一个WebSettings对象,用来控制WebView的属性设置
loadUrl(String url) 加载指定的Url
loadData(String data,String mimeType,String encoding) 加载指定的Data到WebView中.使用"data:"作为标记头,该方法不能加载网络数据.其中mimeType为数据类型如:textml,image/jpeg. encoding为字符的编码方式
loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) 比上面的loadData更加强大
setWebViewClient(WebViewClient client) 为WebView指定一个WebViewClient对象.WebViewClient可以辅助WebView处理各种通知,请求等事件。
setWebChromeClient(WebChromeClient client) 为WebView指定一个WebChromeClient对象,WebChromeClient专门用来辅助WebView处理js的对话框,网站title,网站图标,加载进度条等

最简单的 WebView 范例

  1. 创建一个 空的 Android 项目 cn.twle.android.WebViewSimple

  2. 修改 AndroidManifest.xml 添加网络权限

    <uses-permission android:name="android.permission.INTERNET" />
    
  3. 修改 MainActivity.java

    package cn.twle.android.webviewsimple;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    
    public class MainActivity extends AppCompatActivity {
    
        private WebView ms_webview = new WebView();
    
        private static final String SITE_URL = "https://www.twle.cn/";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(ms_webview);
    
            WebSettings webSettings = ms_webview.getSettings();
            webSettings.setJavaScriptEnabled(true);
    
            ms_webview.setWebViewClient(new WebViewClient() {
    
                //设置在 WebView 点击打开的新网页在当前界面显示,而不跳转到新的浏览器中
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
                    return true;
                }
            });
    
            ms_webview.loadUrl(SITE_URL);
        }
    }
    

参考文档

  1. Android WebView

  2. WebChromeClient 文档

  3. WebViewClient 文档

  4. WebSettings 文档

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.