如何从android的webview 取得页面上的数据

要从Android的WebView中获取页面上的数据,通常有几种常见的方法:

JavaScript Interface:通过JavaScript和Android Interface进行通信。这种方法允许你在JavaScript中调用Android的方法,反之亦然。

Evaluate JavaScript:直接从WebView中执行JavaScript代码,并获取执行结果。

下面详细说明这两种方法:

方法一:使用JavaScript Interface
创建一个Java Interface:

先创建继承自Object的类,并添加您希望在JavaScript中调用的方法。在方法上添加@JavascriptInterface注解。

public class MyJavaScriptInterface {
@JavascriptInterface
public void getDataFromWeb(String data) {
// 处理从Web传来的数据
Log.d(“WebData”, data);
}
}
设置JavaScript Interface:

在你的Activity或Fragment中,通过addJavascriptInterface方法将该接口添加到WebView中。

WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true); // 启用JavaScript
webView.addJavascriptInterface(new MyJavaScriptInterface(), “AndroidInterface”);
调用Android Interface:

在网页的JavaScript中,通过window.AndroidInterface.getDataFromWeb(data)来调用Android的方法。

方法二:使用Evaluate JavaScript
这种方法允许直接从WebView中执行JavaScript代码,并获取执行结果。

在WebView设置中启用JavaScript:

WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true); // 启用JavaScript
使用evaluateJavascript方法:

你可以通过evaluateJavascript方法直接从WebView中执行JavaScript代码,并获取结果。

webView.evaluateJavascript(
“(function() { return document.body.textContent; })();”,
new ValueCallback() {
@Override
public void onReceiveValue(String value) {
// value 是 JavaScript 执行结果
Log.d(“WebData”, value);
}
});
总结
如果你需要不断地与网页交互并获取数据,使用JavaScript Interface可能是更好的选择。如果只需要获取某些特定的数据,evaluateJavascript可能是更简单、更直接的方法。

以上方法都需要确保WebView已经加载完页面,可以添加一个WebViewClient并在onPageFinished方法中执行这些操作:

webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// 在这里调用evaluateJavascript或者操作JavaScript Interface
}
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/61315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣--LCR 140.训练计划||

题目 给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号&#xff0c;请查找并返回倒数第 cnt 个训练项目编号。 示例 1&#xff1a; 输入&#xff1a;head [2,4,7,8], cnt 1 输出&#xff1a;8 提示&#xff1a; 1 < head.length < 100 0 < hea…

奶龙IP联名异军突起:如何携手品牌营销共创双赢?

在快节奏的互联网消费时代&#xff0c;年轻消费群体对产品和品牌的要求越来越挑剔。因此在品牌年轻化的当下&#xff0c;一方面需要品牌自身形象也要不断追求时代感&#xff0c;另一方面品牌也需要不断引领消费者需求&#xff0c;提升竞争力和产品力。 奶龙作为近年来异军突起…

Java LinkedList 详解

LinkedList 是 Java 集合框架中常用的数据结构之一&#xff0c;位于 java.util 包中。它实现了 List、Deque 和 Queue 接口&#xff0c;是一个双向链表结构&#xff0c;适合频繁的插入和删除操作。 1. LinkedList 的特点 数据结构&#xff1a;基于双向链表实现&#xff0c;每个…

ROM修改进阶教程------安卓14去除修改系统应用后导致的卡logo验证步骤 适用安卓13 14 安卓15可借鉴参考

上期的博文解析了安卓14 安卓15去除系统应用签名验证的步骤解析。我们要明白。修改系统应用后有那些验证。其中签名验证 去卡logo验证 与可降级安装应用验证等等的区别。有些要相互结合使用。今天的博文将对修改系统应用后卡logo验证做个步骤解析。 通过博文了解💝💝�…

【Spring boot】微服务项目的搭建整合swagger的fastdfs和demo的编写

文章目录 1. 微服务项目搭建2. 整合 Swagger 信息3. 部署 fastdfsFastDFS安装环境安装开始图片测试FastDFS和nginx整合在Storage上安装nginxnginx安装不成功排查:4. springboot 整合 fastdfs 的demodemo编写1. 微服务项目搭建 版本总结: spring boot: 2.6.13springfox-boot…

Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 Docker 概述 1.1 Docker 主要组成部分 1.2 Docker 安装 2.0 Docker 常见命令 2.1 常见的命令介绍 2.2 常见的命令演示 3.0 数据卷 3.1 数据卷常见的命令 3.2 常见…

部门管理系统功能完善(删除部门、添加部门、根据 ID 查询部门 和 修改部门)

一、目标 继续实现 删除部门、添加部门、根据 ID 查询部门 和 修改部门 的详细功能实现&#xff0c;分为 Controller 层、Service 层 和 Mapper 层。 二、代码分析 总体代码&#xff1a; Controller 层&#xff1a; package com.zhang.Controller; Slf4j RequestMapping(&qu…

三格电子-EtherNet IP转Modbus TCP网关

EtherNet/IP转Modbus TCP网关 SG-EIP-TCP-210 产品用途 SG-EIP-TCP-210 网关可以实现将 Modbus TCP 接口设备连接到 EtherNet/IP 网络中。用户不需要了解具体的 Modbus TCP 和 EtherNet/IP 协议即可实现将 Modbus TCP 设备挂载到 EtherNet/IP 接口的 PLC 上&#xff0c;并和 …

查找redis数据库的路径

Redis 数据库的路径通常由配置文件中的 dir 参数指定 查找 Redis 配置文件&#xff1a; Redis 配置文件通常命名为 redis.conf。您可以在以下位置查找它&#xff1a; /etc/redis/redis.conf&#xff08;Linux 系统上的常见位置&#xff09;/usr/local/etc/redis/redis.conf&…

java:简单小练习,面积

面积&#xff1a;圆和长方形 接口&#xff1a;实现面积 test:调用 一、interface: 对于接口&#xff0c;它是Java中一个新增的知识点&#xff0c;而C中没有&#xff0c;因为Java有一个缺陷就是不可以实现多继承&#xff0c;只可以单继承&#xff0c;这就限制了有些功能的使…

241117学习日志——[CSDIY] [ByteDance] 后端训练营 [05]

CSDIY&#xff1a;这是一个非科班学生的努力之路&#xff0c;从今天开始这个系列会长期更新&#xff0c;&#xff08;最好做到日更&#xff09;&#xff0c;我会慢慢把自己目前对CS的努力逐一上传&#xff0c;帮助那些和我一样有着梦想的玩家取得胜利&#xff01;&#xff01;&…

修改gitee提交时用户名密码输错导致提交失败的解决方法

1、打开控制面板&#xff0c;点击用户账户 点击管理Windows凭据 点击Windows凭据&#xff0c;找到gitee,删除后重新git push 重新输入密码即可

Pytest-Bdd-Playwright 系列教程(10):配置功能文件路径 优化场景定义

Pytest-Bdd-Playwright 系列教程&#xff08;10&#xff09;&#xff1a;配置功能文件路径 & 优化场景定义 前言一、功能文件路径的配置1.1 全局设置功能文件路径1.2. 在场景中覆盖路径 二、避免重复输入功能文件名2.1 使用方法2.2 functools.partial 的背景 三、应用场景总…

安装gentoo之第二步:安装gentoo基本系统

目标 &#xff1a;将gentoo配置为服务器&#xff0c; 一、下载并解压stage文件 1.官网下载stage文件 网址&#xff1a;https://www.gentoo.org/downloads/ 将gentoo配置为服务器&#xff0c;所以只下载了stage3-amd64-systemd-20241117T163407Z.tar.xz这个最小的stage文件. 基…

Methode Electronics EDI 需求分析

Methode Electronics 是一家总部位于美国的全球性技术公司&#xff0c;专注于设计和制造用于多个行业的电子和电气组件&#xff0c;产品涵盖汽车、工业、电信、医疗设备以及消费电子等多个领域&#xff0c;提供创新的解决方案。 填写Methode_EDI_Parameters_Template Methode_…

Java基础知识(六)

文章目录 StringString、StringBuffer、StringBuilder 的区别&#xff1f;String 为什么是不可变的?字符串拼接用“” 还是 StringBuilder?String#equals() 和 Object#equals() 有何区别&#xff1f;字符串常量池的作用了解吗&#xff1f;String s1 new String("abc&qu…

p2p网络介绍

P2P&#xff08;Peer-to-Peer&#xff09;网络 是一种去中心化的通信模型&#xff0c;其中每个参与者&#xff08;节点&#xff09;既是客户端&#xff0c;又是服务器。与传统的客户端-服务器&#xff08;C/S&#xff09;架构不同&#xff0c;在 P2P 网络中&#xff0c;所有节点…

C++ STL(7)set

文章目录 一、set1、简介2、迭代器3、常用操作4、应用示例 前言&#xff1a; std::set是C标准模板库&#xff08;STL&#xff09;中的一个关联容器&#xff0c;它存储唯一元素&#xff0c;并自动按升序排列。std::set通常用于需要快速查找、插入和删除元素的场景&#xff0c;同…

ImportError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29‘ not found

3.一、编译安装make 以make4.2 2.2.1为例 1.下载make wget https://ftp.gnu.org/gnu/make/make-4.2.tar.gz 2.解压make4.2安装包 tar -zxvf make-4.2.tar.gz && cd make-4.2 3.编译安装make-4.2 ./configure --prefix/usr/local/make4.2 make && make …

一文解决Latex中的eps报错eps-converted-to.pdf not found: using draft setting.

在使用Vscode配的PDFLatex编译IEEE TII的Latex模板时&#xff0c;出现eps文件不能转换为pdf错误&#xff0c;看了几十篇方法都没用&#xff0c;自己研究了半天终于可以正常运行了。主要原因还是Settings.JSON中的PDFLatex模块缺少&#xff1a;"--shell-escape", 命令…