Android 使用webView加载html页面
创作时间:
作者:
@小白创作中心
Android 使用webView加载html页面
引用
CSDN
1.
https://blog.csdn.net/qq_19688207/article/details/137955667
1. 在布局XML中指定WebView根节点
<WebView
android:id="@+id/myWebView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
2. 在Java的onCreate()方法中使用
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_three);
//1. asset目录下的index.html文件
String filePath = "file:///android_asset/html/index.html";
//2.本地内存中的index.html文件
// 获取文件夹路径
String htmlPath = getExternalFilesDir("html").getPath();
File htmlFile = new File(htmlPath);
// 判断是否存在,不存在则创建
if (htmlFile.exists()){
htmlPath = htmlFile.getPath()+File.separator+"index.html";
}else {
htmlFile.mkdirs();
htmlPath = htmlFile.getPath()+File.separator+"index.html";
}
// 地址
String localFilePath = "file:///"+htmlPath;
//3.指定的URL的html文件
/**
* 若是不显示,在AndroidManifest.xml中添加android:usesCleartextTraffic="true"
* 并且设置网络权限
*/
String urlPath = "https://www.baidu.com/";
myWebView = findViewById(R.id.myWebView);
WebSettings myWebSettings = myWebView.getSettings();
// webView解决加载html页面空白问题
myWebSettings.setJavaScriptEnabled(true);// 设置支持javascript
myWebSettings.setUseWideViewPort(true);//将图片调整到适合webView大小
myWebSettings.setLoadWithOverviewMode(true);//缩放至屏幕大小
myWebSettings.setDomStorageEnabled(true);//设置DOM缓存,当H5网页使用localstorage时一定要设置
myWebSettings.setCacheMode(android.webkit.WebSettings.LOAD_NO_CACHE);// 设置去缓存,防止加载的是上一次数据
myWebSettings.setDatabaseEnabled(true);
// 解决加载本地内存中报错 err_access_denied
myWebSettings.setAllowFileAccess(true);
myWebSettings.setAllowContentAccess(true);
// 解决webView报错 Loading local files from file:// urls is not possible due browser security restrictions
/**
* 设置是否允许运行在一个file schema URL环境下的JavaScript访问来自其他任何来源的内容,
* 包括其他file schema URLs。
* 通过此API可以设置是否允许通过file url加载的Javascript可以访问其他的源,
* 包括其他的文件和http,https等其他的源。与上面的类似,实现一个就可以。
* webSetting.setAllowUniversalAccessFromFileURLs(true);
* */
myWebSettings.setAllowUniversalAccessFromFileURLs(true);
/**
* 设置是否允许运行在一个file schema URL环境下的JavaScript访问来自其他任何来源的内容,
* 包括其他file schema URLs。
* 通过此API可以设置是否允许通过file url加载的Javascript可以访问其他的源,
* 包括其他的文件和http,https等其他的源。与上面的类似,实现一个就可以。
*/
//myWebSettings.setAllowUniversalAccessFromFileURLs(true);
//加载html
if (filePath != null) {
myWebView.loadUrl(urlPath);
}
}
3. 创建assets目录(与res目录同一级别)
4. 将要访问的*.html页面放置到assets目录即可
5. 使用X5内核 腾讯SDK
地址:腾讯浏览服务
下载sdk:腾讯浏览服务-SDK下载
放置在libs文件夹,引用
AS高版本:
implementation(fileTree("libs"))

AS低版本:
android{
...
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
dependencies{
...
compile files('libs/tbs_sdk_thirdapp_v4.3.0.386_44286_sharewithdownloadwithfile_withoutGame_obfs_20230210_114429.jar')
}
AndroidManifest.xml配置权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name=".activity.app.MyAplication"
***
/application>
Application.java设置初始化
package com.example.yuanzhoulv.activity.app;;
import android.app.Application;
import com.tencent.smtt.sdk.QbSdk;
public class MyAplication extends Application {
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
//搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
@Override
public void onViewInitFinished(boolean arg0) {
// TODO Auto-generated method stub
//x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
}
@Override
public void onCoreInitFinished() {
// TODO Auto-generated method stub
}
};
//x5内核初始化接口
QbSdk.initX5Environment(getApplicationContext(), cb);
}
}
使用:
*.xml
<com.tencent.smtt.sdk.WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
*.java
//1. asset目录下的index.html文件
String filePath = "file:///android_asset/html/index.html";
//2.本地内存中的index.html文件
// 获取文件夹路径
String htmlPath = getExternalFilesDir("html").getPath();
File htmlFile = new File(htmlPath);
// 判断是否存在,不存在则创建
if (htmlFile.exists()){
htmlPath = htmlFile.getPath()+File.separator+"index.html";
}else {
htmlFile.mkdirs();
htmlPath = htmlFile.getPath()+File.separator+"index.html";
}
// 地址
String localFilePath = "file:///"+htmlPath;
//3.指定的URL的html文件
/**
* 若是不显示,在AndroidManifest.xml中添加android:usesCleartextTraffic="true"
* 并且设置网络权限
*/
String urlPath = "https://www.baidu.com/";
webView = findViewById(R.id.webView);
com.tencent.smtt.sdk.WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);// 设置支持javascript
webSettings.setUseWideViewPort(true);//将图片调整到适合webView大小
webSettings.setLoadWithOverviewMode(true);//缩放至屏幕大小
webSettings.setDomStorageEnabled(true);//设置DOM缓存,当H5网页使用localstorage时一定要设置
webSettings.setCacheMode(android.webkit.WebSettings.LOAD_NO_CACHE);// 设置去缓存,防止加载的是上一次数据
webSettings.setDatabaseEnabled(true);
// 解决加载本地内存中报错 err_access_denied
webSettings.setAllowFileAccess(true);
webSettings.setAllowContentAccess(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
//加载html
if (filePath != null) {
webView.loadUrl(localFilePath);
}
热门推荐
高铁临停1分钟,信阳市人民医院成功抢救胸痛患者
伏湿膏真的能去除湿气吗?
全球最美10大颜色,榜首毫无争议!
深度探讨5G网络延迟设定,优化用户体验与应用支撑
氢氧化钠在制药中的使用技巧有哪些?
什么是资本化利息及其计算方法?资本化利息对财务报表的影响有哪些?
AI智能写作:重塑文字创作的未来
科研论文写作指南:从选题到发表的全程解析
猴头菇怎么吃:四道美味食谱详解
血压高头疼应该怎么办
血压高头疼该怎么缓解
英语六级翻译方法与技巧
冰箱除臭终极攻略!茶叶、咖啡渣竟比除味剂管用10倍
買到假貨可以報警嗎?律師解析法律程序與消費者權益!
直播购物买到假货怎么办?申诉退款全攻略
两会教育议题:人工智能促进教育变革成关注热点
兼职合同需要约定哪些内容
轮滑可以锻炼孩子的专注力吗
ABS系统:轮速检测与ECU解析,为安全驾驶保驾护航
水族馆设计:三种过滤系统的选择要点
个人养老金制度已全面实施!你想知道的都在这里!
儒家三杰——孔子、孟子、荀子的关系探讨
农村建100平方米毛坯房需要多少钱?建房预算必读指南
提高浏览效率的利器:多款浏览器插件功能详解及应用场景推荐
多彩非遗升腾浓浓年味 ——在广西感受春节经济活力
MySQL数据库乱码问题的全面解决方案
物业管理三大常见问题解析:公共用地、租户权益与停水通知
如何快速消除紧张心理
历史典故-李愬雪夜下蔡州
苏州城隍庙:千年古都的精神灵魂