Android 中 WebView 的基本用法

Android 中 WebView 的基本用法,第1张

概述Android中WebView的基本用法1.基础知识2.加载网页1.基础知识加载URL(网络或者本地assets文件夹下的html文件)加载html代码Native和JavaScript相互调用加载网络URLwebview.loadUrl("https://www.baidu.com/");加载assets下的html文

AndroID 中 WebVIEw 的基本用法1. 基础知识2. 加载网页

1. 基础知识

加载 URL (网络或者本地 assets 文件夹下的 HTML 文件)
加载 HTML 代码
Native 和 JavaScript 相互调用

@H_301_33@

加载网络 URL

@H_301_33@
webvIEw.loadUrl("https://www.baIDu.com/");

加载 assets 下的 HTML 文件

@H_301_33@
webvIEw.loadUrl("file:///androID_asset/test.HTML");

加载 HTML 代码

@H_301_33@
// 两个代码差不多// 偶尔出现乱码webvIEw.loadData();// 比上面的好一些, 可以友好解决编码问题webvIEw.loadDataWithBaseURL();

网页的前进后退

@H_301_33@
// 网页是否可以后退webvIEw.canGoBack();// 网页进行后退webvIEw.goBack();// 网页是否可以前进webvIEw.canGoForward();// 网页进行前进webvIEw.goForward();// 网页是否可以前进/后退 steps 步webvIEw.canGoBackOrForward(int steps);// 网页进行前进/后退 steps 步webvIEw.goBackOrForward(int steps);

执行 Js 代码.

@H_301_33@
webvIEw.loadUrl("JavaScript:alert('Hello World!')");webvIEw.evaluateJavaScript("JavaScript:alert('Hello World!')", null);
2. 加载网页

建立一个最简单的 HTML 文件

@H_301_33@

WebVIEwActivity

@H_301_33@
package com.example.hello;import androIDx.appcompat.app.AppCompatActivity;import androID.os.Bundle;import androID.webkit.WebVIEw;public class WebVIEwActivity extends AppCompatActivity {    // 声明    private WebVIEw wb;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_web_vIEw);        // 获取        wb = findVIEwByID(R.ID.wb);        // 加载本地 HTML 文件        wb.loadUrl("file:///androID_asset/test.HTML");    }}

activity_web_vIEw

@H_301_33@
<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:app="http://schemas.androID.com/apk/res-auto"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    tools:context=".WebVIEwActivity">    <WebVIEw        androID:ID="@+ID/wb"        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent" /></relativeLayout>

加载网页上的页面

@H_301_33@
package com.example.hello;import androIDx.appcompat.app.AppCompatActivity;import androID.annotation.Suppresslint;import androID.graphics.Bitmap;import androID.os.Bundle;import androID.util.Log;import androID.vIEw.KeyEvent;import androID.webkit.WebChromeClIEnt;import androID.webkit.WebResourceRequest;import androID.webkit.WebVIEw;import androID.webkit.WebVIEwClIEnt;public class WebVIEwActivity extends AppCompatActivity {    // 声明    private WebVIEw wb;    @Suppresslint("SetJavaScriptEnabled")    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_web_vIEw);        // 获取        wb = findVIEwByID(R.ID.wb);        // 加载本地 HTML 文件//        wb.loadUrl("file:///androID_asset/test.HTML");        // 加载网页 HTML 文件        // 支持 Js 和 DOM        wb.getSettings().setJavaScriptEnabled(true);        wb.getSettings().setDomStorageEnabled(true);        // 防止所有后打开默认浏览器        wb.setWebVIEwClIEnt(new MyWebVIEwClIEnt());        wb.setWebChromeClIEnt(new MyWebChromeClIEnt());        wb.loadUrl("https://www.baIDu.com/");    }    /**     * 防止返回到之前的 Activity     *     * @param keyCode 按键     * @param event   事件     * @return true     */    @OverrIDe    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK && wb.canGoBack()) {            wb.goBack();            return true;        }        return super.onKeyDown(keyCode, event);    }    static class MyWebVIEwClIEnt extends WebVIEwClIEnt {        @OverrIDe        public boolean shouldOverrIDeUrlLoading(WebVIEw vIEw, WebResourceRequest request) {            vIEw.loadUrl(request.getUrl().toString());            return super.shouldOverrIDeUrlLoading(vIEw, request);        }        @OverrIDe        public voID onPageStarted(WebVIEw vIEw, String url, Bitmap favicon) {            super.onPageStarted(vIEw, url, favicon);            Log.d("WebVIEwClIEnt", "Page started...");        }        @OverrIDe        public voID onPageFinished(WebVIEw vIEw, String url) {            super.onPageFinished(vIEw, url);            Log.d("WebVIEwClIEnt", "Page Finished...");        }    }    /**     * 添加所有记录和 Title     */    class MyWebChromeClIEnt extends WebChromeClIEnt {        @OverrIDe        public voID onProgressChanged(WebVIEw vIEw, int newProgress) {            super.onProgressChanged(vIEw, newProgress);        }        @OverrIDe        public voID onReceivedTitle(WebVIEw vIEw, String Title) {            super.onReceivedTitle(vIEw, Title);            setTitle(Title);        }    }}

总结

以上是内存溢出为你收集整理的Android 中 WebView 的基本用法全部内容,希望文章能够帮你解决Android 中 WebView 的基本用法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1049490.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存