首页 > 其他分享 >android webview加载assets目录中的html

android webview加载assets目录中的html

时间:2023-12-15 15:47:36浏览次数:34  
标签:mWebSettings assets url html import webview true android view

 加载目录:

String url = "file:///android_asset/web/index.html";
 
webView.loadUrl(url);

完整代码:

package com.example.h5application;

import androidx.appcompat.app.AppCompatActivity;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.webkit.CookieManager;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    private WebView webView;
    String url = "file:///android_asset/web/index.html";

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = new CustomWebView(this);
        WebSettings mWebSettings = webView.getSettings();

        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);
        mWebSettings.setJavaScriptEnabled(true);//设置支持javaScript
        mWebSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小
        mWebSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小
        mWebSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        mWebSettings.setUserAgentString("User-Agent");
        mWebSettings.setLightTouchEnabled(true);//设置用鼠标激活被选项
        mWebSettings.setBuiltInZoomControls(true);//设置支持缩放
        mWebSettings.setDomStorageEnabled(true);//设置DOM缓存,当H5网页使用localStorage时,一定要设置
        mWebSettings.setDatabaseEnabled(true);
        mWebSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//设置去缓存,防止加载的为上一次加载过的
        mWebSettings.setSupportZoom(true);//设置支持变焦
        webView.setHapticFeedbackEnabled(false);
        mWebSettings.setPluginState(WebSettings.PluginState.ON);
        mWebSettings.setAllowFileAccess(true);
        mWebSettings.setAllowContentAccess(true);
        mWebSettings.setAllowUniversalAccessFromFileURLs(true);
        mWebSettings.setAllowFileAccessFromFileURLs(true);

        webView.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                Log.d("MainActivity","开始加载");
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                Log.d("MainActivity","加载结束");
            }

            // 链接跳转都会走这个方法
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Log.d("MainActivity","Url:"+ url );
                view.loadUrl(url);// 强制在当前 WebView 中加载 url
                return false;
            }
        });

        //设置响应js 的Alert()函数
        webView.setWebChromeClient(new WebChromeClient() {

            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
                Log.d("MainActivity","newProgress:"+ newProgress );
            }

            @Override
            public void onReceivedTitle(WebView view, String title) {
                super.onReceivedTitle(view, title);
                Log.d("MainActivity","标题:"+ title);
            }

            @Override
            public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
                AlertDialog.Builder b = new AlertDialog.Builder(MainActivity.this);
                b.setTitle("");
                b.setMessage(message);
                b.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        result.confirm();
                    }
                });
                b.setCancelable(false);
                b.create().show();
                return true;
            }

            //设置响应js 的Confirm()函数
            @Override
            public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
                AlertDialog.Builder b = new AlertDialog.Builder(MainActivity.this);
                b.setTitle("");
                b.setMessage(message);
                b.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        result.confirm();
                    }
                });
                b.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        result.cancel();
                    }
                });
                b.create().show();
                return true;
            }

            @Override
            public boolean onJsPrompt(WebView view, String url, String message, String defaultValue,
                                      final JsPromptResult result) {
                result.confirm();
                return super.onJsPrompt(view, url, message, message, result);
            }

        });

        webView.loadUrl(url);
        setContentView(webView);
    }
}

 

标签:mWebSettings,assets,url,html,import,webview,true,android,view
From: https://www.cnblogs.com/zuiniub/p/17903480.html

相关文章

  • html实现鼠标悬停显示气泡文字内容
    需求描述:当鼠标悬停在一个元素上的时候,显示气泡,气泡内容可以是一段文字或图片。实现如下:<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>气泡显示</title>    <script src="https://code.jquery.com/jquery-3.4.1.min.js"><......
  • html+js实现数字自动动态增长
    animationnumber函数的参数可以是数组也可以是单个字符串,但是必须是数组中的元素是数字类型HTML部分<div class="content-boxs">    <div class="row-price">        <div class="price-box">            <p id="totalPrice" data-value="......
  • 2023最新中级难度HTML面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-中级难度HTML面试题合集问:请解释HTML5与之前的HTML版本相比有哪些新特性和优势?HTML5引入了许多新特性和优势,包括但不限于以下几点:新元素和功能:HTML5引入了一些新的元素,例如、、等,可以实现绘图、视频播放等功能。支持离线存储:HTML5允......
  • HTML 常用表单元素使用以及注解
    一、表单的用途HTML表单用于收集用户的输入信息。HTML表单表示文档中的一个区域,此区域包含交互控件,将用户收集到的信息发送到Web服务器。一个表单有三个基本组成部分:表单标签:这包含了处理表单数据所用的URL以及数据提交到服务器的方式。表单域(表单控件):包含了文本框、......
  • 用html实现本地文件的上传
    实现本地文件的上传需要使用到HTML5中的FileAPI和FormData对象。以下是一个简单的实现示例:<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>文件上传</title></head><body><formid="upload-form"><......
  • HTML5 文件上传下载的实例代码
    前言HTML5中提供的文件API在前端中有着丰富的应用,上传、下载、读取内容等在日常的交互中很常见。而且在各个浏览器的兼容也比较好,包括移动端,除了IE只支持IE10以上的版本。想要更好地掌握好操作文件的功能,先要熟悉每个API。FileList对象和file对象HTML中的input[type=......
  • html 5(三)之框架标签
    iframe嵌入嵌入广告<iframesrc="网址"height=""width=""frameborder=""></iframe>与超链接target关联<ahref="httos://www.toutiao.com"target="container">头条</a><iframename=&q......
  • html 5(二)之表单
    表单表单也就是交互区域<formaction="https://www.baidu.com/s"target="_self"method="get"><inputtype="text"name="wd"><button>搜索</button></form><form>表单标签......
  • html (六)全局属性
    全局属性:id、class、id作用:锚点、label表单控件关联注意:不用在<head>、<html>、<meta>、<script>、<style>、<title>使用该属性仅限一个html不能重复class作用:指定类名,配合CSS表示样式styleCSS设置样式dir值:ltr、rtl<dbodir="rtl">你好</dbo>title用于超......
  • Python——了解Html+Css语言代码
    HTML(HyperTextMarkupLanguage超文本标记语言)用特殊的一种标签把需要特殊展示出来的内容圈起来。这就是标记语言语法规则<标记>被标记的内容</标记><标记/>巨大的坑。在以前2000年左右。那个时候语法规则不够规范。有些人写HTML的时候习惯性的漏掉括回文本:文字,字符串,符号。超......