当前位置: 首页 > news >正文

如何从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
}
});

相关文章:

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

要从Android的WebView中获取页面上的数据,通常有几种常见的方法: JavaScript Interface:通过JavaScript和Android Interface进行通信。这种方法允许你在JavaScript中调用Android的方法,反之亦然。 Evaluate JavaScript&#xff…...

VTK知识学习(12)- 读取PNG图像

1、代码 private void ShowPngImage(){vtkPNGReader pngReader vtkPNGReader.New();pngReader.SetFileName("D:\\图像\\boxes\\cardboard_boxes_01.png");pngReader.Update();vtkImageActor imageActor vtkImageActor.New();imageActor.SetInputData(pngReader.Get…...

Springboot项目搭建(3)-更改用户信息与文件上传

1.概要 前一章节完成了用户信息的注册、登录、详细信息查询,以及线程池与拦截器技术。 这一章完善了用户信息更新/更改功能,包括昵称、邮箱、头像、密码等... 而后接触到了本地上传和云上传,其二者区别: 选择本地上传还是云上…...

Docker1:认识docker、在Linux中安装docker

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...

python成绩分级 2024年6月python二级真题 青少年编程电子学会编程等级考试python二级真题解析

目录 python成绩分级 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python成绩分级 2024年6月 python编程等级考试二级编程题 一、题目要求 …...

android 如何获取当前 Activity 的类名和包名

其一:getClass().getSimpleName() public static String getTopActivity(Context context){ ActivityManager am (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE); ComponentName cn am.getRunningTasks(1).get(0).topAct…...

Spring Boot 项目 myblog 整理

myblog 项目是一个典型的 Spring Boot 项目,主要包括用户注册、登录、文章管理(创建、查询、更新、删除)等功能。 1. 项目结构与依赖设置 项目初始化与依赖 使用 Spring Initializr 创建项目。引入必要的依赖包: Spring Boot W…...

uniapp 城市选择插件

uniapp城市选择插件 如上图 地址 完整demo <template><view><city-selectcityClick"cityClick":formatName"formatName":activeCity"activeCity":hotCity"hotCity":obtainCitys"obtainCitys":isSearch&quo…...

测试工程师如何在面试中脱颖而出

目录 1.平时工作中是怎么去测的&#xff1f; 2.B/S架构和C/S架构区别 3.B/S架构的系统从哪些点去测&#xff1f; 4.你为什么能够做测试这一行&#xff1f;&#xff08;根据个人情况分析理解&#xff09; 5.你认为测试的目的是什么&#xff1f; 6.软件测试的流程&#xff…...

Mesh路由组网

Mesh无线网格网络&#xff0c;多跳&#xff08;multi-hop&#xff09;网络&#xff0c;为解决全屋覆盖信号&#xff0c;一般用于家庭网络和小型企业 原理 网关路由器&#xff08;主路由&#xff0c;连接光猫&#xff09;&#xff0c;Mesh路由器&#xff08;子路由&#xff0c;…...

LeetCode131:分割回文串

题目链接&#xff1a;131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 代码如下&#xff1a; class Solution { private:vector<vector<string>> result;vector<string> path; // 放已经回文的子串void backtracking (const string& s, int s…...

详细解析 devmem 命令:在 Linux 系统中直接访问内存的利器

目录 什么是 devmem&#xff1f;为什么需要 devmem&#xff1f;devmem 命令的基本语法devmem 在硬件调试中的应用安全性与风险devmem 的常见应用示例结论 在嵌入式系统开发和硬件调试中&#xff0c;开发者经常需要直接与硬件打交道&#xff0c;访问和修改内存中某些特定区域的内…...

[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法

本文由Markdown语法编辑器编辑完成。 1. 需求背景: 最近在启动一个服务时&#xff0c;突然发现它的一个接口&#xff0c;被另一个服务ip频繁的请求。 按理说&#xff0c;之前设置的是&#xff0c;每隔1分钟请求一次接口。但从日志来看&#xff0c;则是1秒钟请求一次&#xff…...

【前端知识】nodejs项目配置package.json深入解读

package.json详细解读 文件解读一、文件结构二、字段详解三、使用场景四、注意事项 组件版本匹配规则 文件解读 package.json 文件是 Node.js 项目中的一个核心配置文件&#xff0c;它位于项目的根目录下&#xff0c;并包含项目的基本信息、依赖关系、脚本、版本等内容。以下是…...

XGBOOST算法Python实现(保姆级)

摘要 XGBoost算法&#xff08;eXtreme Gradient Boosting&#xff09;在目前的Kaggle、数学建模和大数据应用等竞赛中非常流行。本文将会从XGBOOST算法原理、Python实现、敏感性分析和实际应用进行详细说明。 目录 0 绪论 一、材料准备 二、算法原理 三、算法Python实现 3…...

JDK、MAVEN与IDEA的安装与配置

1.认识JDK、MAVEN与IDEA JDK 提供了编译和运行Java程序的基本环境。Maven 帮助管理项目的构建和依赖。IDEA 提供了一个强大的开发环境&#xff0c;使得编写、调试和运行Java程序更加高效。 2. 安装与环境配置 2.1 官网地址 选择你需要的版本下载&#xff1a; MAVEN下载传送…...

输出比较简介

输出比较简介 主要是用来输出PWM波形&#xff0c;这个波形是驱动电机的&#xff08;智能车和机器人等&#xff09;必要条件 OC&#xff08;Output Compare&#xff09;输出比较&#xff0c;还有IC&#xff0c;全称是Input Capture&#xff0c;意为输入捕获&#xff0c;还有CC…...

什么是反向 DNS 查找以及它的作用是什么?

反向DNS查询&#xff08;rDNS&#xff09;是一种技术&#xff0c;用于确定与某个IP地址对应的域名。当我们对一个IP地址进行反向DNS查询时&#xff0c;实际上是向域名系统&#xff08;DNS&#xff09;的特殊部分请求信息&#xff0c;这部分被称为PTR记录。PTR记录会返回与这个I…...

集群聊天服务器(13)redis环境安装和发布订阅命令

目录 环境安装订阅redis发布-订阅的客户端编程环境配置客户端编程 功能测试 环境安装 sudo apt-get install redis-server 先启动redis服务 /etc/init.d/redis-server start默认在6379端口上 redis是存键值对的&#xff0c;还可以存链表、数组等等复杂数据结构 而且数据是在…...

[ubuntu]编译共享内存读取出现read.c:(.text+0x1a): undefined reference to `shm_open‘问题解决方案

问题log /tmp/ccByifPx.o: In function main: read.c:(.text0x1a): undefined reference to shm_open read.c:(.text0xd9): undefined reference to shm_unlink collect2: error: ld returned 1 exit status 程序代码 #include <stdio.h> #include <stdlib.h> #…...

Ostrakon-VL-8B赋能微信小程序:开发餐饮AI点餐助手

Ostrakon-VL-8B赋能微信小程序&#xff1a;开发餐饮AI点餐助手 你有没有过这样的经历&#xff1f;走进一家新餐厅&#xff0c;面对琳琅满目的菜单&#xff0c;却不知道哪道菜合自己口味&#xff0c;或者担心食材里有自己过敏的东西。又或者&#xff0c;正在控制饮食的你&#…...

别再怕环路!手把手教你用锐捷RG-IS2700G交换机配置ERPS环网(附完整命令)

锐捷RG-IS2700G交换机ERPS环网实战&#xff1a;从零搭建高可靠企业网络 第一次接手企业园区网核心交换机的运维工作时&#xff0c;看到拓扑图上那个醒目的环形结构&#xff0c;我的手指在键盘上方悬停了整整十分钟——毕竟谁都不想成为"那个让全公司断网的新人"。直到…...

云安全部署防护成为企业刚需,合规+高效部署指南

企业上云已从可选变为必选项&#xff0c;公有云、私有云、混合云的广泛应用&#xff0c;让企业IT架构更敏捷、成本更可控&#xff0c;但与此同时&#xff0c;云环境的安全风险也呈爆发式增长。Gartner预测&#xff0c;到2025年&#xff0c;99%的云安全事件将由客户配置错误引发…...

Steam Achievement Manager终极指南:如何完全掌控你的Steam成就系统

Steam Achievement Manager终极指南&#xff1a;如何完全掌控你的Steam成就系统 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager Steam Achievement Manage…...

数据仓库实战:查询优化器工作原理深度解析 + 性能提升实战指南

数据仓库实战&#xff1a;查询优化器工作原理深度解析 性能提升实战指南摘要一、基础认知&#xff1a;数据仓库查询优化器是什么&#xff1f;1.1 核心定义1.2 数仓优化器与数据库优化器的区别1.3 优化器核心目标二、工作流程&#xff1a;查询优化器完整执行链路&#xff08;带…...

安卓集成Google TTS引擎:实现离线中文语音播报的完整实践

1. 为什么需要Google TTS引擎 很多安卓开发者都遇到过这样的需求&#xff1a;在应用中实现文字转语音功能。系统自带的Pico TTS引擎虽然轻量&#xff0c;但最大的痛点就是不支持中文。我去年开发一个盲人辅助应用时就踩过这个坑&#xff0c;测试时发现语音输出全是英文&#xf…...

TensorFlow开发中用到的一些第三方库

本节介绍下后面开发要用到的辅助库&#xff0c;并做一些简单的代码实例和效果演示&#xff0c;当然我们都是为了最终目标TensorFlow开发做准备的&#xff0c;用到的也是这些库的简单的api&#xff0c;这里做简单的介绍为后面TensorFlow开发做准备&#xff0c;对于这些库的深入研…...

深入解析AdminBSB:Bootstrap 3.x与Material Design完美融合的终极指南

深入解析AdminBSB&#xff1a;Bootstrap 3.x与Material Design完美融合的终极指南 【免费下载链接】AdminBSBMaterialDesign AdminBSB - Free admin panel that is based on Bootstrap 3.x with Material Design 项目地址: https://gitcode.com/gh_mirrors/ad/AdminBSBMateri…...

从零到一:DzzOffice开源协同办公平台实战部署与深度应用指南

从零到一&#xff1a;DzzOffice开源协同办公平台实战部署与深度应用指南 【免费下载链接】dzzoffice dzzoffice 项目地址: https://gitcode.com/gh_mirrors/dz/dzzoffice 你是否正在为团队协作效率低下而烦恼&#xff1f;是否在寻找一款能够替代Google Workspace或Offic…...

PowerToys中文汉化版:微软官方增强工具箱的终极本地化体验

PowerToys中文汉化版&#xff1a;微软官方增强工具箱的终极本地化体验 【免费下载链接】PowerToys-CN PowerToys Simplified Chinese Translation 微软增强工具箱 自制汉化 项目地址: https://gitcode.com/gh_mirrors/po/PowerToys-CN PowerToys中文汉化版是微软官方系统…...