Android JS双向调用

Android手机中内置了一款高性能webkit内核,该内核完美封装到了WebView组件中,而从js中直接调用java方法和在java中直接调用js方法更是让我们看到了WebView的强大,下面这个小例子介绍了怎样在js和java中双向调用方法

1.首先是布局文件main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<WebView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/webView"
/>
</LinearLayout>



2.在assets目录下新建一个index.html文件

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<script type="text/javascript">
//data数据类型为字符串,字符串里面是数组,每一个数组元素为一个json对象,例如"[{id:1,name:'张三',phone:'135656461'},{id:2,name:'李四',phone:'1896561'}]"
function setContactInfo(data)
{
var tableObj = document.getElementById("contact");
var jsonObjects = eval(data); //通过eval方法处理得到json对象数组
for(var i=0; i<jsonObjects.length; i++)
{
var jsonObj = jsonObjects[i]; //获取json对象
var tr = tableObj.insertRow(tableObj.rows.length); //添加一行
//添加三列
var td1 = tr.insertCell(0);
var td2 = tr.insertCell(1);
var td3 = tr.insertCell(2);

td1.innerHTML = jsonObj.id;
td2.innerHTML = jsonObj.name;
td3.innerHTML = jsonObj.phone;
}
}

</script>
</head>
<!--onload="javascript:myObject.init()调用服务器端init方法-->
<body onload="javascript:myObject.init()">
<table id="contact">
<tr>
<td>编号</td>
<td>姓名</td>
<td>电话</td>
</tr>
</table>
</body>
</html>


3.接着是Activity

package com.lamp.activity;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.webkit.WebView;

public class HTMLActivity extends Activity {
private WebView webView = null;
public Handler handler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

webView = (WebView)this.findViewById(R.id.webView);
//设置字符集编码
webView.getSettings().setDefaultTextEncodingName("UTF-8");
//开启JavaScript支持
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new MyObject(this,handler), "myObject");
//加载assets目录下的文件
String url = "file:///android_asset/index.html";
webView.loadUrl(url);
}
}


4.然后是绑定js的类MyObject

package com.lamp.activity;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.os.Handler;
import android.webkit.WebView;

public class MyObject {
private Handler handler = null;
private WebView webView = null;

public MyObject(HTMLActivity htmlActivity, Handler handler) {
this.webView = (WebView)htmlActivity.findViewById(R.id.webView);
this.handler = handler;
}

public void init(){
//通过handler来确保init方法的执行在主线程中
handler.post(new Runnable() {

public void run() {
//调用客户端setContactInfo方法
webView.loadUrl("javascript:setContactInfo('" + getJsonStr() + "')");
}
});
}

public static String getJsonStr(){
try {
JSONObject object1 = new JSONObject();
object1.put("id", 1);
object1.put("name", "张三");
object1.put("phone", "123456");

JSONObject object2 = new JSONObject();
object2.put("id", 2);
object2.put("name", "李四");
object2.put("phone", "456789");

JSONArray jsonArray = new JSONArray();
jsonArray.put(object1);
jsonArray.put(object2);
return jsonArray.toString();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
}



运行项目,我们可以看到两位联系人的信息显示在了屏幕上
WebView与Js交互 上周五,老大让临时搞一个评分app,俩页面,第一个页面显示所有待评分的物业,第二个页面是对应物业的评分页面。评分页面是表格样式的,所以就让web端的同学写个html,我们通过Webview去展示。这里不仅仅是展示就完了,web页面需要知道我们点击的哪个物业以及所填评委的名字并显示在html上,所以客户端需要把这两个值传给html。当评委评分完后点击html里的提交按钮并提交成功后,客户端也需要进行 阅读详情

相关推荐

Android与HTML交互实现JS与原生有参无参调用

在移动应用开发中,混合开发模式已成为主流趋势之一。本章将介绍Android系统中如何通过WebView组件实现与HTML页面的交互,重点阐述WebView的核心作用以及Android与JavaScript之间互相调用的基本原理。WebView不仅是展示网页内容的容器,更是连接原生功能与Web逻辑的桥梁。通过启用JavaScript支持并建立安全的通信接口,开发者可实现数据双向传递、功能调用与动态交互。理解这些基础机制,为后续深入掌握Android与HTML的通信技术打下坚实基础。

weixin_42509513的博客 1297

android js双向调用

转:http://liaokang-java.iteye.com/blog/1168832 Android手机中内置了一款高性能webkit内核,该内核完美封装到了WebView组件中,而从js中直接调用java方法和在java中直接调用js方法更是让我们看到了WebView的强大,下面这个小例子介绍了怎样在js和java中双向调用方法 1.首先是布局文件main.xml

greatmind829的专栏 665

NLP实践——利用自己的语料进行Mask Language Model预训练

#!/usr/bin/env python # coding: utf-8 # In[1]: import os import json import copy from tqdm.notebook import tqdm import torch from torch.optim import AdamW from torch.utils.data import DataLoader, Dataset from transformers import BertForMaskedLM, BertTo

weixin_44826203的博客 1万+

Android中Java和JS双向调用

找到满意的不错公司了,接下来就是自己的奋斗了。这两天弄一个WebView中JS的双向调用,大概猜得到其中的步骤方法,但是还是会有一些混乱和盲点。搜了几篇文章,看看代码,修修改改,先上代码,晚点后面再做总结。 (1)、MainActivity.java package com.example.administrator.androidjstest; import android.a

u010550007的博客 401

【ESP32-S3量产指南】基于Flash下载工具实现Release模式Flash加密与安全配置

本文详细介绍了ESP32-S3量产阶段如何通过Flash下载工具实现Release模式下的Flash加密与安全配置。从加密模式选择、工具配置到分区表优化,提供了一套完整的量产安全解决方案,帮助开发者有效防止固件泄露和篡改,确保设备安全。

weixin_28730131的博客 230

不用SE63逐个翻译!ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量处理TCODE描述的3种姿势

本文介绍了三种利用ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量翻译SAP事务码(TCODE)描述的高效方案,旨在替代SE63逐个翻译的低效操作。内容涵盖从基础循环、Excel导入到全自动程序集成的实现方法,帮助开发者显著提升批量翻译效率,并深入解析了SAP翻译体系的核心原理与实战技巧。

weixin_42593130的博客 659

android中Webview与javascript的交互(互相调用)

最近做android项目中遇到要在webview中做与js交互相关的东东,涉及到js中调用android本地的方法,于是查了资料整理了一下android和js互相调用的过程。如下demo,demo的主要实现过程如下:通过加载本地的html文件(里面有js脚本),实现android本地方法和js中的交互。 第一步: mainfest.xml中加入网络权限 第二步: 加载本地写好的ht

Beyond0525的专栏 16万+

MALTAB程序利用质心法去寻峰

质心法的优点是简单易实现且计算速度快,适用于数据点较少或峰值较明显的情况。然而,对于复杂的数据或多峰曲线,质心法可能无法准确识别所有峰值,因此在这些情况下可能需要使用更复杂的峰值检测算法。质心法(Centroid Method)是一种寻找峰值的方法,其基本原理是通过计算数据窗口内的质心位置来确定峰值的位置。质心是指在一维数据中,按照数据的幅值对位置进行加权平均的结果,即质心位置为数据幅值加权平均值的位置。变量定义了计算质心的窗口大小。最后,绘制了找到的峰值位置和幅值点,并显示了找到的峰值位置和幅值的结果。

走向CTO的路上... 1345

js与ios、安卓原生方法互调。

调用安卓方法并且传递参数过去:window.WebAppInterface.安卓方法("参数")window.webkit.messageHandlers.方法名.postMessage(vue2版接受ios传递过来的参数,vue3则把生命构子改为自定义函数方法即可。window.安卓暴露的方法=function(安卓传递过来的参数){}window.android.方法名(将该方法放入window对象即可。window.方法名 = 方法名。

weixin_73251435的博客 916

信号与电源完整性5:轨道塌陷噪声/电源轨道噪声分析及降低解决方案

经过上一节关于串扰的分析,我们已经清楚,噪声问题不仅仅来源于信号网络;电源和地网络所产生的噪声,被反馈到其所在的元器件和信号网络时,其破坏力也是巨大的;本节所讨论的轨道塌陷噪声就是一个典型的实例。在经过电源的地网络的电流发生改变时,在电源和地之间的阻抗上将产生一个压降;由于该压降的产生,用电元件的电压将直接被拉低,甚至可能对电路产生功能性的错误。接下来硬小二将详细的分析电源轨道噪声和降低其的解决方法。...

fydar的博客 2241

Cadence Orcad Capture原理图断线的检查与避免方法

在设计电路图中,尤其是直接借鉴别人的设计进行二次开发的过程中难免会遇到如下尴尬的情况。有没有眼神好的朋友发现图纸的哪里有不对劲的地方呢?

fydar的博客 3268

Android与js交互实例

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666) 本文核心代码转自阳光岛主:http://blog.youkuaiyun.com/ithomer/article/details/8737999 Android中可以通过webview来实现和js的交互,在程序中调用js代码...

孤云博客 5396

【Python】秋招机考 —— 2025/9/17 华为 AI 方向

秋招机考,华为 AI,使用 Python 完成编程。

一杯水果茶!足矣~ 1165

安卓webview和h5交互

先上html的代码: &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt; &lt;HTML&gt; &lt;HEAD&gt;&lt;TITLE&gt;安卓和js交互demo&lt;/TITLE&gt; &lt;meta charset="utf-8"&gt; &lt;/

u012954039的博客 4万+

6、Cocos2D游戏开发:精灵添加与角色实现

本文详细介绍了在Cocos2D游戏开发中如何添加背景精灵和玩家角色精灵。通过创建GameScene场景、组织项目资源、使用多分辨率图像适配不同设备,并深入讲解了将角色拆分为上下半身以实现更真实瞄准效果的原理。文章还解析了Cocos2D的图像搜索机制、锚点概念及其应用,以及如何通过父子节点关系管理复合角色。最终实现了猎人角色在场景中的正确显示与定位,为后续动画和交互功能打下基础。

e3f4g5的博客 90

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android WebView中的JavaScript代码使用

上一篇博文:Android WebView使用基础已经说了一些Android中WebView的基本使用。   本篇文章主要介绍WebView中的JavaScript代码的执行相关,已经JS代码与Android代码的互相调用。   (因为本人对Web开发并不是很熟悉,所以如果有哪些地方说得不对,还请指正。)   在WebView中使用JavaScript   如果你想要载入的页面中用了Ja

easyer2012的专栏 875

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android利用webView调用JavaScript

1、Android中利用webView调用网页上的Js代码。    Android 中可以通过webView来实现和Js的交互,在程序中调用Js代码,只需要将webView控件的支持Js的属性设置为true,然后通过loadUrl就可以直接进行调用,如下所示: mWebView.getSettings().setJavaScriptEnabled(true); mWebView.load

Devil不加V 1030

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android学习之WebView和JS的交互

最近做一个项目的时候,需要写一个简单的富文本编译器 本来是打算用安卓里面的Span来写,可是太复杂了,然后看到JS中的富文本编译器,实现简单,代码逻辑清楚,所以记录记录现在很多App里面都内置了Web网页,涉及Android客户端和Web网页的交互 (感觉android快失业了~)其实android和JS相互调用时通过WebView,其实就是: android调JS代码 JS调android

小薇子的博客 372

android与js交互传多个参,Android:WebView与Javascript交互(相互调用参数、传值)

Android中可以使用WebView加载网页,同时Android端的java代码可以与网页上的javascript代码之间相互调用。效果图:(一)Android部分:布局代码:xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_p...

weixin_42164931的博客 1155

Android与Js互调

1. WebView 使用加载网页 <uses-permission android:name="android.permission.INTERNET"></uses-permission> 1.1· 布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and...

dreams_deng的博客 1233

浅谈android和js的交互问题

现在很多app里面很多功能都用html5实现,也就是用webview加载html显示一些 图文信息。这么做的好处就是减少开发成本 ,一套html在android ,ios及web都可以跑。节省了很多开发成本。但是这个也就带来相应的一些问题。最大问题就是交互问题。所以下面给大家说一下android和js怎么实现交互(android调用js中的方法,js里面调用android的方法)。 一

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 2001

android webview JS传值

1.布局 &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com...

android开发笔记 480
上一篇: Android 音频播放
下一篇: java多线程下载网络资源
lk231_java
博客等级 码龄15年 0粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值