Android项目中的assert文件下的html里的js交互

android用webview加载assert中的html并且可拨打页面中的电话 android用webview加载assert中的html并且可拨打页面中的电话。 立即下载

要是webview能够与JavaScript交互,首先需要webview要启用JavaScript:

  1. WebSettings webSettings = myWebView.getSettings();  
  2.         webSettings.setJavaScriptEnabled(true);  
 然后创建JavaScript的接口:

  1. public class WebAppInterface {  
  2.         Context mContext;  
  3.   
  4.         /** Instantiate the interface and set the context */  
  5.         WebAppInterface(Context c) {  
  6.             mContext = c;  
  7.         }  
  8.   
  9.         /** Show a toast from the web page */  
  10.         @JavascriptInterface  
  11.         public void showToast(String toast) {  
  12.             Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();  
  13.         }  
  14.     }  

给webview添加JavaScript接口:

[html]  view plain copy
  1. myWebView.addJavascriptInterface(new WebAppInterface(this), "Android");  

  本地JavaScript文件:

[javascript]  view plain copy
  1. <input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />  
  2.   
  3. <script type="text/javascript">  
  4.     function showAndroidToast(toast) {  
  5.         Android.showToast(toast);  
  6.     }  
  7. </script>  

  整个代码如下:

[java]  view plain copy
  1. public class MainActivity extends Activity {  
  2.     private WebView myWebView;  
  3.   
  4.     @Override  
  5.     protected void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.activity_main);  
  8.         myWebView = (WebView) findViewById(R.id.webview);  
  9.         WebSettings webSettings = myWebView.getSettings();  
  10.         webSettings.setJavaScriptEnabled(true);  
  11.         myWebView.addJavascriptInterface(new WebAppInterface(this), "Android");  
  12.         ProcessWebString();  
  13.   
  14.     }  
  15.   
  16.     public class WebAppInterface {  
  17.         Context mContext;  
  18.   
  19.         /** Instantiate the interface and set the context */  
  20.         WebAppInterface(Context c) {  
  21.             mContext = c;  
  22.         }  
  23.   
  24.         /** Show a toast from the web page */  
  25.         @JavascriptInterface  
  26.         public void showToast(String toast) {  
  27.             Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();  
  28.         }  
  29.     }  
  30.   
  31.     private void ProcessWebString() {  
  32.         // 加载 asset 文件  
  33.         String tpl = getFromAssets("web_tpl.html");  
  34.         myWebView.loadDataWithBaseURL(null, tpl, "text/html", "utf-8", null);  
  35.     }  
  36.   
  37.     /* 
  38.      * 获取html文件 
  39.      */  
  40.     public String getFromAssets(String fileName) {  
  41.         try {  
  42.             InputStreamReader inputReader = new InputStreamReader(  
  43.                     getResources().getAssets().open(fileName));  
  44.             BufferedReader bufReader = new BufferedReader(inputReader);  
  45.             String line = "";  
  46.             String Result = "";  
  47.             while ((line = bufReader.readLine()) != null)  
  48.                 Result += line;  
  49.             return Result;  
  50.         } catch (Exception e) {  
  51.             e.printStackTrace();  
  52.         }  
  53.         return "";  
  54.     }  
  55.   
  56. }  
这里获取到的是assert文件下的html字符串,写了一个方法获取assert文件下html


还有种方法可以直接load

webView.loadUrl("file:///android_asset/html/company.html");

assets文件下的html文件下的company.html文件


webView.setWebChromeClient(new MyWebClient());

private class MyWebClient extends WebChromeClient {


@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result) {
// TODO Auto-generated method stub
Intent intent = null;
if (message.contains("tid")) {
Pattern pattern = Pattern.compile("tid=(\\d+)");
Matcher matcher = pattern.matcher(message);
String tid = "";
while (matcher.find()) {
String st = matcher.group(0);
tid = st.split("=")[1];
System.out.println("---" + tid);
}
intent = new Intent(BbsMyHomeActivity.this,
BbsHomeDetailTestActivity.class);
intent.putExtra("tid", tid);
} else {
intent = new Intent(BbsMyHomeActivity.this,
MyAttentionDetailActivity.class);
intent.putExtra("uid", message);
}
startActivity(intent);
// new CustomeToast(BbsMyHomeActivity.this, message);
new PopupToast(BbsMyHomeActivity.this, message, footlayout);
// 少写了这行代码可能会导致,点击了一次js里的alert弹出方法,无法点击第二次。
result.cancel();
return true;
}
}


http://blog.youkuaiyun.com/ithomer/article/details/8737999


做项目的时候还发现一个问题,就是WebView的addJavascriptInterface方法失效的问题

里面的类的方法名上面要加annotation
@JavascriptInterface

表忘了导包import android.webkit.JavascriptInterface;

生信物种注释软件Kraken2+Bracken的安装与使用 一、软件安装与数据库下载 1.Kraken2安装 Kraken2是一个基于k-mer算法的高精度宏基因组序列分类软件,能够快速的将测序reads进行物种分类。 使用conda一键安装,要先安装好anaconda或者miniconda conda install -y kraken2 输入krakek2 --help 出现如下所示帮助文档,则表示安装成功。 2.Bracken安装 bracken是一种从宏基因组数据中高度准确的计算物种丰度的统计方法。 同样使用conda一键安装 conda install - 阅读详情

相关推荐

ZEMAX学习第7天-手机镜头光学系统设计全过程案例

接下来对系统微调,依次缩小CRA和畸变,首先对CRA进行依次递减(39°、38°、37°、36°、35°),目前CRA角度40度,每次下降一度进行优化,利用MAXX加OPLT一起控制,控制小于35°。可以看出在标注的三个地方镜头曲率变化,导致PY=1的光线走向奇特,因此需要对矢高进行调整,按照标注的地方依次调整(从右到左)至传函变好,越靠近右边对其余视场影响越小。3.圆锥系数值较大,透镜形状怪异;一、第1,3镜子偏厚,第4镜子偏薄,45镜子间隔边缘偏小,第5片镜子中心厚度与边缘厚度相差较大,需要控制;

liningliwei的博客 1088

Android中实现WebView加载assets文件夹下的html文件

背景 创建assets文件夹 创建一个html文件 加载html文件 图示 背景 最近有新的需求,webView加载本地的html文件,可以做一些简单的html页面的显示操作,当加载出错或者需要其他的提示,用自己写好的html文件来展示可以优化用户体验。下面跟我一起来实现。 创建assets文件夹 如上图所示,可以创建assets文件夹。 创建一个ht...

活在当下!输出快乐! 3万+

《遥感大模型生产级实战:从数据到决策的端到端AI工程》系列第三部分:城市洪涝灾害应急响应与评估平台实战-文章 14:项目二启动与多源异构数据对齐

我们将系统性地梳理城市洪涝场景下的所有关键数据源,从天上的卫星(光学与SAR)、空中的无人机,到地面的物联网传感器和社交媒体信息流,深入剖析每种数据在洪涝响应中的独特价值、获取方式与内在局限性。本章的核心将是一个详尽的、生产级的数据对齐技术全景,我们将分步解决三大核心对齐难题:空间对齐(将所有数据投影到统一的地理坐标系)、时间对齐(处理不同采样频率的时间序列)以及最困难的语义对齐(将文本描述与物理观测相关联)。

panshengwu的博客 2003

android加载html

今天写了一个小测试 android加载本地的一个html 首先main目录下新建一个assets 在android studio中新建目录时选中foder的assets 把html放入其中 在android中引用的时候 路径为file:///android_asset/obtjs.html android和js互动 js若要调用android的代码 则 webSettings.setJav...

weixin_30602505的博客 170

TYPE-C PD协议实战:如何用LDR6028芯片实现边充电边OTG(附完整电路设计)

本文详细解析了如何利用LDR6028芯片实现TYPE-C接口在PD协议下的边充电边OTG功能。通过剖析PD协议双角色协商的核心挑战,提供了完整的硬件电路设计要点,包括Type-C接口配置、电源路径管理及系统框架,并附有调试实战指南,助力开发者构建稳定可靠的一线多用解决方案。

c6d7e8f9g的博客 1131

Vivaldi天线HFSS建模实战:从参数化曲线到辐射优化的完整流程

本文详细介绍了Vivaldi天线在HFSS中的建模与优化全流程,涵盖参数化曲线绘制、馈电系统设计及性能验证等关键步骤。通过实战案例分享,帮助工程师掌握超宽带天线的HFSS建模技巧,提升雷达探测和通信系统设计效率。重点解析了指数渐变曲线建模、微带馈电优化等核心技术要点。

weixin_29228781的博客 277

android 加载assets目录下的静态html文件案例

1、添加assets目录 在main目录下添加assets目录,如下: 2、再在assets目录添加一个web目录,如下: 3、webview加载assets目录下html静态文件,代码如下: String url = "file:///android_asset/web/index.html"; webView.loadUrl(url);  ps: 路径是"file...

进击的Ace 2746

从ST电机库到TI InstaSPIN:手把手对比两种主流FOC实现中的坐标变换差异

本文深入对比了ST电机库与TI InstaSPIN在FOC实现中的坐标变换差异,包括坐标系定义、变换系数和角度处理等关键点。针对BLDC和PMSM电机控制,提供了从理论到实践的移植方案,帮助工程师快速解决平台切换中的性能问题。特别解析了Clarke/Park变换在两种实现中的微妙差异及其对PI控制的影响。

weixin_28724661的博客 398

Android Webview 加载外部html时选择加载本地的js,css等资源文件

在使用WebView加载网页的时候,有一些固定的资源文件如js的jquery包,css,图片等资源会比较大,如果直接从网络加载会导致页面加载的比较慢,而且会消耗比较多的流量。所以这些文件应该放在assets里面同app打包。 要解决这个问题需要用到API 11(HONEYCOMB)提供的shouldInterceptRequest(WebView view, String url) 函数来加载本

漫漫求学中的孩儿 1万+

mojoPortal 路径穿越漏洞复现(CVE-2025-28367)(附脚本)

 在 mojoPortal CMS 版本 <=2.9.0.1 中发现了一个导致 ViewState 反序列化的目录遍历漏洞。通过利用此问题,未经身份验证的攻击者可以泄露 Web 根目录中的敏感文件,包括应用程序的文件。此配置文件包含用于验证和解密 ViewState 数据的文件。知道此密钥后,网络攻击者可以构建恶意 ViewState 有效负载,从而导致在底层服务器上执行远程代码。(CVE-2025-28367)

iSee857的博客 501

ESP32设备驱动-TB6612FNG直流电机驱动

TB6612FNG 是一款出色的双电机驱动器,非常适合将两个小型直流电机(例如微型金属齿轮电机)连接到微控制器,它还可以用于控制单个双极步进电机。 基于 MOSFET 的 H 桥比 L298N 和 Sanyo 的 LB1836M 等旧式驱动器中使用的基于 BJT 的 H 桥效率高得多,后者允许将更多电流输送到电机,而从逻辑电源汲取的电流更少 (对于真正低电压的应用,LB1836 仍然具有 TB6612 的优势)。

视觉与物联智能 3409

android怎么用assets,Android中assets的使用(用于读取内容)

assets目录下主要存放四种文件:文本文件、图像文件、网页文件(包括html中引用的js/ccs/jpg等资源)、音频视频文件。①加载assets目录下的网页webView.loadUrl("file:///android_asset/html/index.htmll");这种方式可以加载assets目录下的网页,并且与网页有关的css,js,图片等文件也会的加载。②加载assets目录下的图片...

weixin_28990605的博客 2999

【华为OD机试】创建二叉树(python, java, c++, js)

请按下列描达构建一颗二叉树,并返回该树的根节点: 1、先创建值为-1的根结点,根节点在第0层; 2、然后根据operations依次添加节点: operations[i] = [height, index] 表示对第 height 层的第index 个节点node, 添加值为i 的子节点: 若node 无「左子节点」。则添加左子节点; 若node 有「左子节点」但无「右子节点」,则添加右子节点: 否则不作任何处理。 height、index 均从0开始计数;index 指所在层的创建顺序。

A_D_I_D_A_S的博客 191

Android的webview加载本地html、assert内html和网络URL&&& JS与移动端webview的相互交互

Android的webview加载本地html、assert内html和网络URL&&& JS与移动端webview的相互交互

zhuangyalei的专栏 5448

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

webView加载assert中的html

前几天项目中遇到了加载 很长文本的界面  在历经了 拼接字串, 拆分成多个Textview显示的痛苦后  采用了 HTML的方式来展示  但是还是有几点要注意  此博客就是来记录这次经历的.这个是从微软的隐私声明截取的部分  我们要做的网页就是这样的.首先创建项目 简单的设置加载的webview@Override protected void onCreate(Bundle savedInstan...

hierarchy_cui的博客 1580

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android——加载自定义html+JavaScript

有些时候想自己写html网页,然后实现在我们的activity中与html相互操作,这种操作很少在app中提现,但是特殊情况下也是可以,哈哈。看以下步骤:首先需要写一个MainActivity的布局,我这里就简单的写一个,代码如下:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.an

Minor昔年 868

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android WebView加载html

加载本地html支持html里加载assert下的文件,支持java调用html里的js方法。activity_w1.xml创建。创建html文件和图片目录。book.html内容。1.加载网页html。2.加载本地html。创建assert目录。

mds0517的博客 1579

Android中Assert和raw文件的区别?

Android中assert文件夹和raw文件夹的区别: res/raw和asserts的相同点: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制文件 res/raw和assets的不同点: 1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID,即 R.id.filename,. assets文件夹下的文件不会

人生起落,生活苦甜,坚持追求! 5521

用webview写界面,加载本地js,js,html文件

原地址:http://www.cnblogs.com/sleeptothedeath/p/3700494.html 用webview写界面,加载本地js,js,html文件 以jquery mobile为例   1.在android界面拖入一个webview,然后添加一个internet权限 按 Ctrl+C 复制代码 按 Ctrl+C 复制代码

SimonXiaoZhou的专栏 6190

Android 加载本地 Web 项目

Android端如何访问本地静态web项目

1222

Midscene.js 跨语言调用指南:在 Python/Java 里跑 AI 视觉自动化,3 步上手

想让手机自己点"设置"、让网页自己填表单,却不打算先学一整套 JavaScript?Midscene.js 的社区 Python SDK 和 Java SDK 正好解决这件事:前者一条命令装好,后者一个 Maven 依赖接进现有工程,AI 视觉自动化能力直接进到你的脚本里。 ## 30 秒判断:这套跨语言方案值不值得你花时间 先说大白话:Midscene.js 是个"看屏幕、动鼠标/手指"的

gitblog_00565的博客 425

深入解析 Sinon 的 `assert.alwaysThrew`:验证 spy 是否每次都抛出异常

Sinon 是 JavaScript 生态中最常用的测试替身(test double)库之一,其内置的 `sinon.assert` 断言体系将 `fake`、`spy`、`stub` 的行为验证从"手动判断布尔值"升级为"带详细错误信息的断言失败"。本文聚焦其中专门用于异常行为的断言方法 `assert.alwaysThrew`:它校验被观测对象**每一次调用**是否都抛出了指定异常。读完本文,

gitblog_01043的博客 907

Android WebKit HTML主资源加载过程

结合WebKit的源码,对Android WebKit对HTML主资源的加载流程进行了深入的分析。

Legend(谭海燕)的专栏 8270

freeCodeCamp 每日编程挑战解析:用 JavaScript 正则实现 Markdown 斜体解析器

> 本文以 freeCodeCamp 仓库中 [Challenge 143: Markdown Italic Parser](https://link.gitcode.com/i/7b0de9b9015bad697fa18e370a7f84ee) 这份每日编程挑战题为核心,完整解读它的题目规则、官方测试用例、种子代码与参考答案。读完本文,你既能理解 Markdown 斜体语法在“转换为 HTML

gitblog_00245的博客 971

如何用自然语言控制任何设备:Midscene.js终极视觉自动化指南

你是否厌倦了编写复杂的UI自动化脚本?是否因为界面元素频繁变化而不得不反复修改测试代码?Midscene.js正是为解决这些问题而生的革命性工具!这是一个AI驱动的视觉自动化框架,让你用简单的自然语言就能控制任何平台的应用。想象一下,只需说"打开相机拍照"或"在淘宝搜索手机",AI就能自动完成所有操作,这不再是科幻电影的场景,而是你今天就能体验的现实。 ## 什么是Midscene.js?视觉自

gitblog_01184的博客 591

Unity集成ZFBrowser实现C#与JavaScript双向通信的完整指南

在现代应用开发中,内嵌浏览器技术已成为连接本地应用与Web生态的重要桥梁,其核心原理是通过浏览器内核渲染引擎在应用内直接解析和显示网页内容。这项技术的工程价值在于打破了本地环境与Web技术栈的壁垒,实现了资源复用和开发效率的提升,广泛应用于数据可视化面板、混合UI框架和实时信息展示等场景。本文聚焦于Unity引擎中的CEF集成方案,深入探讨了ZFBrowser这一高性能插件如何通过Chromium内核实现完整的HTML5支持,并构建了稳定的双向通信机制。针对实际开发中的线程安全、内存管理等关键问题,提供了从

weixin_33965305的博客 431
上一篇: Android自定义对话框(Dialog)位置,大小
下一篇: Android 对Activity设置统一的过渡动画效果
fancylovejava
博客等级 码龄16年 1052粉丝 184原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值