脚本之家

电脑版
提示:原网页已由神马搜索转码, 内容由www.jb51.net提供.
您的位置:首页软件编程Android→ Android用webView加载html页面

Android使用webView加载html页面的详细步骤

  更新时间:2024年06月12日 10:44:58  作者:破z晓 
Android WebView是Android开发中提供的一种用于显示网页内容的组件,它可以加载网页的url链接,也可以加载本地的html文件,下面这篇文章主要给大家介绍了关于Android使用webView加载html页面的相关资料,需要的朋友可以参考下

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);
}

总结 

到此这篇关于Android使用webView加载html页面的文章就介绍到这了,更多相关Android用webView加载html页面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

    • 为提高代码的可读性以及后期的可维护性,为我们的代码加上规范化的注释是很有必要,不仅有利于提高自己的专业素养,也能方便他人
      2013-12-12
    • 本篇文章主要介绍了Android 图片Bitmap的剪切的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2018-01-01
    • 这篇文章主要介绍了详解 WebView 与 JS 交互传值问题的相关资料,需要的朋友可以参考下
      2017-06-06
    • 这篇文章主要为大家介绍了Android APP瘦身shrinkResources使用问题详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
      2022-11-11
    • 今天小编就为大家分享一篇android中实现在ImageView上随意画线涂鸦的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
      2018-10-10
    • 这篇文章主要介绍了Android 中Popwindow弹出菜单的两种方法实例的相关资料,这里提供了两种实现的方法,并附有实例代码,需要的朋友可以参考下
      2017-03-03
    • 这篇文章主要为大家详细介绍了Android开发文件存储实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
      2021-11-11
    • 本篇文章主要介绍了android 捕捉异常并上传至服务器的简单实现,具有一定的参考价值,有兴趣的可以了解一下。
      2017-04-04
    • 这篇文章主要介绍了Android 手写RecyclerView实现列表加载,涉及到列表的需求,肯定第一时间想到RecyclerView,即便是自定义View,那么RecyclerView也会是首选,为什么会选择RecyclerView而不是ListView,主要就是RecyclerView的内存复用机制,这也是RecyclerView的核心 
      2022-08-08
    • 本文通过两段实例代码分别给大家介绍Android中判断当前网络是否可用和Android 关于判断应用是否有网络的相关知识,对android网络判断相关知识感兴趣的朋友一起学习吧
      2015-12-12

    最新评论