Android-使用WebView视图显示网页

2023-11-18

简介

Android提供了WebView组件(相关类为android.webkit.WebView、android.webkit.WebViewClient)。表面上来看,这个组件与普通的ImageView差不多,但实际上,这个组件的功能要强大得多,WebView本身就是一个浏览器实现!它的内核基于WebKit引擎(怪不得包名是webkit)。如果我们队WebView进行一些美化,包装,可以非常轻松地开发出自己的浏览器。

WebView的API

WebView提供了大量方法来执行浏览器操作,如:

void goBack() //后退
void goForward() //前进
void loadUrl(String url) //加载指定url对应的网页
boolean zoomIn()
boolean zoomOut() //放大/缩小网页

实例

实例参考微信抢红包插件
界面如图:

基本用法

直接在Activity中定义一个WebView

WebView webView = new WebView();
webView.loadData("balala", "text/html", "utf-8");

webView.loadDataWithBaseURL(null, "balabla", "text/html", "utf-8", null);

即可在Activity中显示解析过的html。

使用WebView中的JavaScript调用Android平台的方法

很多时候,WebView加载的页面上是带JavaScript脚本的。为了让WebView中的JavaScript脚本调用Android方法,WebView提供了一个配套的WebSettings工具类,该工具类提供了大量方法来管理WebView的选项设置
在Activity中定义一个WebSettings。

//先获取WebView的设置对象
WebSettings webSettings = webView.getSettings();
//开启JavaScript调用
webSettings.setJavaScriptEnabled(true);
//将MyObject对象暴露给JavaScript脚本:这样test.html页面中的JavaScript可以通过`myObj`来调用MyObject中的方法。

如MyObject中有:

public void showToast(String name){
    Toast.makeText(...).show();
}

然后在text.html页面中即可

<input type ="button" value = "打招呼" onclick="myObj.showToast('孙悟空')">

来调用Android中的MyObject的showToast()方法了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android-使用WebView视图显示网页 的相关文章

  • 如何获取传单标记簇中点击事件的图块?

    这是我的代码 function onMapClick e e originalEvent defaultPrevented true var orig e originalEvent console log orig target map
  • 在 Android 模拟器中获取互联网连接

    我有一台带有wifi连接的台式电脑 我的IP地址是192 168 12 95 网关是192 168 10 10 但是我在android模拟器中没有获得互联网连接 也就是说我无法访问internate 我也尝试过 emulator avd w
  • JSON对象的长度[重复]

    这个问题在这里已经有答案了 该函数生成一个包含 json 对象的数组 var estoque function unpack estoque tnm total estoque vl id tid st tnm tnm split tota
  • 如何创建用于测试的对象的 PagedList?

    我一直在使用 Google 的 arch 库 但是让测试变得困难的一件事是使用PagedList 对于此示例 我使用存储库模式并从 API 或网络返回详细信息 因此 在 ViewModel 中 我调用此接口方法 override fun g
  • Android studio 找不到 Theme.AppCompat.Light.DarkActionBar [重复]

    这个问题在这里已经有答案了 我已经导入了一个Android Studio项目来自Github into Android Studio 虽然我的build gradle有dependencies dependencies compile fi
  • nodejs mocha suite 未定义错误

    我正在尝试使用摩卡运行一些测试 但似乎无法克服这个错误 E tdd nodejs cart gt mocha cart test js node js 201 throw e process nextTick error or err Re
  • 将上部字符转换为下部字符,将下部字符转换为上部字符(反之亦然)[重复]

    这个问题在这里已经有答案了 我需要将某些字符串中的所有较低字符转换为较高字符 并将所有较高字符转换为较低字符 例如 var testString heLLoWorld 应该 HEllOwORLD 转换后 在不保存临时字符串的情况下实现此目的
  • Sequelize.js - “不关联到”

    我在从数据库获取完整数据时遇到一些问题 那是我的模型 User module exports function sequelize DataTypes return sequelize define user id type DataTyp
  • androidx.navigation.fragment.NavHostFragment 无法从 xml 文件访问

    我正在尝试使用带有底部导航视图的 androidx 导航 因此 当我在 xml 文件中放置带有 android name androidx navigation fragment NavHostFragment 的片段时 它会给我一个错误
  • 为什么 document.getelementbyId 在 Firefox 中不起作用?

    我不明白为什么 document getElementById 在 Firefox 中不起作用 document getElementById main style width 100 当我检查 Firebug 时 它说 类型错误 docu
  • React + Semantic-UI:在 UI MODAL 中使用表单

    在没有 React 的普通旧 Semantic UI 中 我已经能够毫无问题地将表单放入 Modal 中 使用 Semantic UI React 版本 我能够在模态中显示表单 但它并没有按照我期望的方式工作 例如 模态框显示后 模态框内的
  • Cosmos DB 中的 MaxItemCount 源选项属性不起作用

    我正在尝试编写一个运行 SQL 查询的简单存储过程 并且我想通过使用 MaxItemCount 属性来限制结果 查询生成 3 个文档 但我只想返回 1 个文档 我使用 MaxItemCount 属性强制执行此限制 但这似乎不起作用 func
  • 限制 jQuery id 字符串吗?

    简而言之 我的问题是字符串在 jQuery 中作为可搜索 id 或可搜索内容有什么限制 更新 我得到了 ID 部分 但不是为什么我什至无法使用该字符串搜索 html 内容 对于任何愿意告诉我一个正则表达式来将模式从 MM dd yy HH
  • javascript:window.print() 打印 2 页,而我有 1 页

    我有一个简单的 HTML 文档 其中仅包含图像标签 我想在文档加载后打印图像 我的代码 img src form1 jpg alt form1 style margin 0 auto display block 它可以工作 但问题是它打印图
  • 在角度控制器中监听文档事件

    如何捕获角度控制器中的事件 我有文档级事件 所以我需要在角度控制器中捕获事件 这可能吗 Update 我有独立的 js 文件来处理来自相机的一些操作 document addEventListener myCameraEvent handl
  • 如何在ListView中标记视图?

    我有一个带有列表视图的应用程序 列表视图工作正常 当我希望列表以标记的某些行开始时 问题就开始了 如果我按下它 我可以标记一行 但是 似乎没有找到一种方法来在初始化时标记任何行 这是我的代码 listViewOfBluetooth getL
  • 更改javascript nodejs中所有页面的href url

    我已经实现了具有多种语言下拉菜单的引导导航栏 当我选择语言时 它将翻译页面 如何更改其他页面的 url 和按钮文本 当我选择french 将所有网址更改为 fr about and fr contact 如何使用 JavaScript 进行
  • Volley 在第一次调用方法时返回 null

    我正在尝试使用 volley 从服务器检索数据 但是当我第一次调用此方法时 我收到服务器的响应 但该方法返回 null 如果我第二次调用它 我会得到最后的响应 public String retrieveDataFromServer Str
  • 如何使用引用该键的变量来获取对象键中的值?

    我有一个对象 我可以引用密钥a如下 var obj a A b B c C console log obj a return string A 我想通过使用变量引用对象键来获取值 如下所示 var name a console log ob
  • Android:防止嗅探(例如使用 CharlesProxy)SSL 流量

    我使用 Charles 检查将我的应用程序发送到 HTTPS 的数据 我在手机上安装了 Charles CA 证书 因此我能够解密每个 SSL 流量 但我发现一些应用程序无法看到 SSL 流量 我如何将这种行为实现到我自己的应用程序中 有了

随机推荐

  • 基于libtorch的LeNet-5卷积神经网络实现(2)--Cifar-10数据分类

    上篇文章中我们使用libtorch实现了LeNet 5卷积神经网络 并对Minst数据集进行训练与分类 本文我们尝试使用该实现的网络对更加复杂的Cifar 10数据集进行训练 分类 基于libtorch的LeNet 5卷积神经网络实现 Le
  • OpenCV(五)——运动目标识别

    课程一览 目录 1 摄像头调用 2 视频的读取与保存 3 帧差法 4 光流法 5 背景减除法
  • ERROR: FPM initialization failed

    出错的原因主要是 usr local php5 sbin php fpm配置错误 仔细检查下 我的错误就是group www这里少了 号 所以出错了 root localhost usr local php5 sbin php fpm PH
  • 服务器系统巡查登记表,信息设备巡检记录表

    信息设备巡检记录表 由会员分享 可在线阅读 更多相关 信息设备巡检记录表 2页珍藏版 请在人人文库网上搜索 1 信息设备巡检记录表 检査人 检査时间 年月日 一 机房环境尺周边设缶 枪杏顶 结论 情况摘要 枪杏顶 结论 情况摘要 溫度 正常
  • MCS-51 汇编指令集(J开头的指令)

    MCS 51系列单片机指令以J开头的指令有8条 分别为 JB bit rel JBC bit rel JC rel JMP A DPTR JNB bit rel JNC rel JNZ rel JZ rel 1 JB bit rel 指令名
  • 计算机设置桌面文件夹,win10电脑怎么更改桌面文件夹路径

    win10电脑怎么更改桌面文件夹路径 我们在使用电脑的时候 在桌面上保存的文件一般都默认在C盘 今天小编跟大家分享下win10电脑怎么更改桌面文件夹路径 具体如下 1 首先我们打开电脑 找到 我的电脑 双击打开 2 进入主界面之后我们选中
  • cocos creator主程入门教程(九)—— 瓦片地图

    这一篇介绍瓦片地图 在开发模拟经营类游戏 SLG类游戏 RPG游戏 都会使用到瓦片地图 瓦片地图地面是通过一个个地砖拼起来的 又分为45度角和90度角两种 45度角俗称2 5D 每个格子都是菱形 而90度角每个格子都是正方形 瓦片地图一般包
  • dlib的安装

    由于需要人脸识别 所以需要安装opencv和dlib OpenCV的安装很顺利 实例也跑的很正常 但dlib的安装却出现了很多坑 而且国内的解决方法都是复制粘贴 一点营养都没有 查了国外资料 终于解决 记录一下 首先是需要安装 以下依赖 b
  • 【C语言】指针和数组的深入理解(第四期)

    篮球哥温馨提示 编程的同时不要忘记锻炼哦 上了编程的贼船 就做快乐的海盗 目录 1 数组参数和指针参数 1 1 一维数组传参 1 2 一级指针传参 1 3 二维数组参数和二级指针参数 1 4 野指针的问题 2 函数指针 3 函数指针数组 4
  • C#创建一个收费接口Charge,其中有一个方法charge();创建另一个收费接口Play,其中有一个方法play()。声明类Bus来实现接口Charge,对于Bus中的charge()实现为输出“

    创建一个收费接口Charge 其中有一个方法charge 创建另一个收费接口Play 其中有一个方法play 声明类Bus来实现接口Charge 对于Bus中的charge 实现为输出 公共汽车 1元 张 不计公里数 声明类Taxi来实现接
  • pythonmap和list_python map和list的区别是什么

    一 结构特点 List是存储单列数据的集合 Map是存储键值对这样的双列数据的集合 List中存储的数据是有顺序的 并且值允许重复 Map中存储的数据是无序的 它的键是不允许重复的 但是值是允许重复的 二 实现类 List接口有三个实现类
  • webpack4.+的使用(一)(webpack的基本使用)

    webpack4 的使用 一 一 webpack的基本使用 1 安装和卸载webpack开发依赖的命令分别为 npm install webpack g和npm uninstall webpack g npm命令是在安装了node js后才
  • SpringBoot 中LocalDateTime格式化日期

    简介 很多时候日期格式输出是这样的 2018 10 09T17 39 07 097 中间有个T 尴尬 是的我们需要去掉这个T 这方法是springboot封装好了的 我们直接使用即可 普通的配置我就不贴了 一 日期格式化输出 code 1
  • unity 物体自动旋转

    using UnityEngine public class AutoRotation MonoBehaviour Tooltip Angular velocity in degrees per seconds public float d
  • 21. Merge Two Sorted Lists

    题目 Merge two sorted linked lists and return it as a new list The new list should be made by splicing together the nodes
  • TensorRT学习(二)通过C++使用

    本文源于学习TensorRT文档 TensorRT Developer Guide 第2章 WORKING WITH TENSORRT USING THE C API 的理解 一 TensorRT实例化对象 使用TensorRT进行推理需要
  • 为什么要接入高防IP,到底有什么作用呢

    首先我们要了解什么是高防IP DDOS高防IP是为了应对互联网的DDOS攻击而产生的一款付费增值产品 根据不同的业务接入的方法也不同 在开通这款DDOS高防IP时服务商会给到对应的高防IP作为对外IP和业务IP使用 游戏业务就需要将之前配置
  • rknn-toolkit安装的一点感想

    rknn toolkit装了好多次 总是会报错 终于尝试出了一个版本可以用的 注意windows和linux上都能用 rknn toolkit v1 7 1 cuda 10 1 python 3 6 pytorch 1 5 1 opencv
  • Ubuntu Hadoop分布式部署

    Ubuntu Hadoop分布式部署 1 vim usr local hadoop 3 2 2 etc hadoop hadoop env sh usr local hadoop 3 2 2为Hadoop安装目录 export JAVA H
  • Android-使用WebView视图显示网页

    简介 Android提供了WebView组件 相关类为android webkit WebView android webkit WebViewClient 表面上来看 这个组件与普通的ImageView差不多 但实际上 这个组件的功能要强