Android 中 WebView 的基本用法详解
- 作者: 火火火火火火火火火火火火
- 来源: 51数据库
- 2021-06-28
加载 url (网络或者本地 assets 文件夹下的 html 文件)
加载 html 代码
native 和 javascript 相互调用
加载网络 url
webview.loadurl(http://www.51sjk.com/Upload/Articles/1/0/246/246509_2021062000032746201.jpg);
加载 assets 下的 html 文件
webview.loadurl(file:///android_asset/test.html);
加载 html 代码
// 两个代码差不多 // 偶尔出现乱码 webview.loaddata(); // 比上面的好一些, 可以友好解决编码问题 webview.loaddatawithbaseurl();
网页的前进后退
// 网页是否可以后退 webview.cangoback(); // 网页进行后退 webview.goback(); // 网页是否可以前进 webview.cangoforward(); // 网页进行前进 webview.goforward(); // 网页是否可以前进/后退 steps 步 webview.cangobackorforward(int steps); // 网页进行前进/后退 steps 步 webview.gobackorforward(int steps);
执行 js 代码.
webview.loadurl("javascript:alert('hello world!')");
webview.evaluatejavascript("javascript:alert('hello world!')", null);
2. 加载网页
建立一个最简单的 html 文件

webviewactivity
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
<?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>

加载网页上的页面
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("http://www.51sjk.com/Upload/Articles/1/0/246/246509_2021062000032746201.jpg");
}
/**
* 防止返回到之前的 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 用法内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
热点文章
android中Bitmap用法(显示,保存,缩放,旋转)实例分析
12
android 仿微信聊天气泡效果实现思路
1
Android的尺度,drawable-xxxxxxx
2
Codeforces Round #656 (Div. 3) (C、D题)
1
Android之handler异步消息处理机制解析
6
GridView中图片显示出现上下间距过大,左右图片显示类似瀑布流的问题
0
AsyncTask的简单使用
5
两个简单Fragment之间的通信(三种方式)
18
uboot修改设置boot参数命令
41
android中实现从相册中一次性获取多张图片与拍照,并将选中的图片显示出来
2
