iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android总结之WebView与Javascript交互(互相调用)
  • 774
分享到

Android总结之WebView与Javascript交互(互相调用)

调用webviewJavaScriptAndroid 2022-06-06 06:06:25 774人浏览 八月长安
摘要

前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App、WEB App、Hybrid App三种方式

前言:

最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App、WEB App、Hybrid App三种方式,个人觉得目前以Hybrid App居多,单纯的数据展示我们直接采用WebView来渲染就可以了,但是有时候可能会用到两者之间传递参数的情况,今天就来总结一下两者之间如何互相调用。本篇主要介绍WebView与javascript交互数据,关于如何将H5网页呈现在WebView上可以参考这篇博客文章:Android总结之WebView使用总结。

WebView与Javascript交互:

 WebView与Javascript交互是双向的数据传递,1.H5网页的js函数调用Native函数 2.Native函数调用JS函数,具体实现以下面例子为主:

1.)mainfest.xml中加入网络权限


<uses-permission android:name="android.permission.INTERNET"/>

2.)WebView开启支持JavaScript


mWebView.getSettings().setJavaScriptEnabled(true); 

3.)简单的H5网页实现,主要实现actionFromNative()、actionFromNativeWithParam(String str),放在assets文件下


<html>
<head>
 <meta Http-equiv="Content-Type" content="text/html;charset=utf-8">
 <script type="text/javascript">
 function actionFromNative(){
   document.getElementById("log_msg").innerHTML +=
    "<br\>Native调用了js函数";
 }
 function actionFromNativeWithParam(arg){
   document.getElementById("log_msg").innerHTML +=
    ("<br\>Native调用了js函数并传递参数:"+arg);
 }
 </script>
</head>
<body>
<p>WebView与Javascript交互</p>
<div>
 <button onClick="window.wx.actionFromJs()">点击调用Native代码</button>
</div>
<br/>
<div>
 <button onClick="window.wx.actionFromJsWithParam('come from Js')">点击调用Native代码并传递参数</button>
</div>
<br/>
<div id="log_msg">调用打印信息</div>
</body>
</html>

4.)Native实现与JS交互函数:actionFromJs()、actionFromJsWithParam()


public class MainActivity extends Activity {
 private WebView mWebView;
 private TextView logTextView;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  mWebView = (WebView) findViewById(R.id.webview);
  // 启用javascript
  mWebView.getSettings().setJavaScriptEnabled(true);
  // 从assets目录下面的加载html
  mWebView.loadUrl("file:///android_asset/wx.html");
  mWebView.addJavascriptInterface(this, "wx");
  logTextView = (TextView) findViewById(R.id.text);
  Button button = (Button) findViewById(R.id.button);
  button.setOnClickListener(new Button.OnClickListener() {
   public void onClick(View v) {
    // 无参数调用
    mWebView.loadUrl("javascript:actionFromNative()");
    // 传递参数调用
    mWebView.loadUrl("javascript:actionFromNativeWithParam(" + "'come from Native'" + ")");
   }
  });
 }
 @android.webkit.JavascriptInterface
 public void actionFromJs() {
  runOnUiThread(new Runnable() {
   @Override
   public void run() {
    Toast.makeText(MainActivity.this, "js调用了Native函数", Toast.LENGTH_SHORT).show();
    String text = logTextView.getText() + "\njs调用了Native函数";
    logTextView.setText(text);
   }
  });
 }
 @android.webkit.JavascriptInterface
 public void actionFromJsWithParam(final String str) {
  runOnUiThread(new Runnable() {
   @Override
   public void run() {
    Toast.makeText(MainActivity.this, "js调用了Native函数传递参数:" + str, Toast.LENGTH_SHORT).show();
    String text = logTextView.getText() + "\njs调用了Native函数传递参数:" + str;
    logTextView.setText(text);
   }
  });
 }
}

mWebView.addJavascriptInterface(this, "wx");相当于添加一个js回调接口,然后给这个起一个别名,我这里起的名字wx(微信哈哈)。@android.webkit.JavascriptInterface为了解决addJavascriptInterface漏洞的,在4.2以后才有的。

5.)布局文件实现


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
 <WebView
  android:id="@+id/webview"
  android:layout_width="match_parent"
  android:layout_height="0dp"
  android:layout_weight="1"/>
 <TextView android:id="@+id/text"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text=""/>
 <Button
  android:id="@+id/button"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="Native调用js函数"/>
</LinearLayout>

6.)代码简单解说

(1.)js(HTML)访问Android(Java)端代码是通过jsObj对象实现的,调用jsObj对象中的函数,如: window.jsObj.actionFromJs(),这里的jsObj就是Native中添加接口的别名

(2.)Android(Java)访问js(HTML)端代码是通过loadUrl函数实现的,访问格式如:mWebView.loadUrl("javascript:actionFromNative()");

demo运行截图:

总结:

这里简单的实现了Js与Native的交互,后期会抽空看下WebViewJavascriptBridge这个开源框架

您可能感兴趣的文章:Android的WebView与H5前端JS代码交互的实例代码Android webview与js的数据交互Android中webview与JS交互、互调方法实例详解Android WebView使用方法详解 附js交互调用方法Android中WebView与Js交互的实现方法Android WebView上实现JavaScript与Java交互android中WebView和javascript实现数据交互实例android中webview控件和javascript交互实例解析Android中webview和js之间的交互Android WebView与JS交互全面详解(小结)


--结束END--

本文标题: Android总结之WebView与Javascript交互(互相调用)

本文链接: https://www.lsjlt.com/news/23230.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Naive与WebView在Android中怎么实现互相调用
    本篇文章为大家展示了Naive与WebView在Android中怎么实现互相调用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android  Naive与WebView的互相调用详解An...
    99+
    2023-05-31
    android naive webview
  • AndroidWebView开发之WebView与Native交互
    目录前言一、JS调用Native的三种方式完整源码二、Native调用WebView的两种方案完整源码前言 附GitHub源码:WebViewExplore 一、JS调用Native...
    99+
    2024-04-02
  • Android应用中怎么利用WebView与Javascript进行交互
    Android应用中怎么利用WebView与Javascript进行交互?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android中可以使用WebView加载网页,同时And...
    99+
    2023-05-31
    android webview javascript
  • Android应用中的webview怎么与JavaScript进行数据交互
    本篇文章为大家展示了Android应用中的webview怎么与JavaScript进行数据交互,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先需要初始化WebView以及设置支持JavaScrip...
    99+
    2023-05-31
    webview javascript android
  • Android与H5交互 -- 点击H5跳转到 Android原生 页面 ,webview与h5(js)交互
    目录标题 Android与H5交互一、清单文件,增加的配置二、在你需要跳转的页面,清单文件中加入如下配置:三、整体结构布局如下 :四、贴一下html里面的代码吧五、具体实现如下: ...
    99+
    2023-09-17
    android studio
  • Android与JS相互调用的方法
    目录Android调用js的方法实现是引入一个webview用webview打开一个页面调取的JS函数。下面是JS同Android的通信,JS调用Android的函数方法。Andro...
    99+
    2024-04-02
  • 基础巩固(五)Android通过WebView与Js交互
    文章目录 简介WebView基本使用常用方法WebView的生命周期 / 状态切换关于前进 / 后退网页清除缓存数据 常用类WebSettings类常见用法:设置WebView缓存 ...
    99+
    2023-09-02
    android javascript 交互
  • OC与Swift的相互调用
    OC调用Swift方法 在 Build Settings 搜索 Packaging ,设置 Defines Module 为 YES  2、新建 LottieBridge.swift 文件,自动生成桥 ProductName-Bridgi...
    99+
    2023-09-15
    swift oc 混编 iOS
  • javascript 方法 重名 相互 调用
    在 JavaScript 中,方法之间的命名是很重要的,但有时候我们会遇到方法同名的情况,这种情况会使得我们的代码出现一些问题,甚至有时候会造成混乱和错误。本文将探讨在 JavaScript 中方法重名相互调用的问题,并提供一些解决方案。方...
    99+
    2023-05-21
  • Flex与JavaScript中怎么实现交互中调用
    今天就跟大家聊聊有关Flex与JavaScript中怎么实现交互中调用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、在JavaScript中调用Flex方法在Flex中可以用Ex...
    99+
    2023-06-17
  • Kotlin与Java如何相互调用
    这篇文章主要介绍了Kotlin与Java如何相互调用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、Kotlin 调用 Java kotlin 关键字转义java 中的方法...
    99+
    2023-06-25
  • Python全角与半角之间相互转换的方法总结
    目录1.应用领域:2.全角半角转换概述3.请注意:4.应用到的库函数5.全角转半角:6.半角转成全角:附:如何通过python转换全角字符串为半角字符串实例说在后面:1.应用领域: ...
    99+
    2024-04-02
  • python 与c++相互调用实现
    目录一、c++调用Python1.Python脚本2.C++调用python脚本二、接口方法1.规范化语法三、Pthon调用c++1.基于extern2.基于swig一、c++调用P...
    99+
    2024-04-02
  • Android View与Compose互相调用的方法是什么
    这篇文章主要讲解了“Android View与Compose互相调用的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android View与Compose互相...
    99+
    2023-07-05
  • Android中WebView与H5前端JS代码交互的示例分析
    这篇文章主要为大家展示了“Android中WebView与H5前端JS代码交互的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中WebView与H5前端JS代码交互的示例分...
    99+
    2023-05-30
    android webview html5
  • MongoDB如何与JavaScript交互使用
    MongoDB可以与JavaScript交互使用通过MongoDB的官方驱动程序或者使用第三方库,比如Mongoose。以下是一些基...
    99+
    2024-05-07
    MongoDB JavaScript
  • PHP学习之实现PHP与JavaScript的交互(二)
    PHP与JavaScript交互的详细介绍 了解JavaScript什么是JavaScriptJavaScript的功能 JavaScript语言基础JavaScript数据类型JavaS...
    99+
    2023-09-16
    javascript php 交互 前端 html
  • 怎么实现C#与Lua相互调用
    这篇文章主要介绍“怎么实现C#与Lua相互调用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么实现C#与Lua相互调用”文章能帮助大家解决问题。一、编译Lua动态链接库1. 编译Windows下使...
    99+
    2023-06-30
  • C++如何实现与Lua相互调用
    今天小编给大家分享一下C++如何实现与Lua相互调用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。概述从本质上来看,其实说是...
    99+
    2023-07-05
  • AndroidView与Compose互相调用实例探究
    目录1. 前言2. Android传统View调用Compose2.1 新建传统View体系的Android项目2.2 项目添加Compose配置2.2.1 在android代码块添...
    99+
    2023-01-30
    Android View与Compose互相调用 Android View与Compose
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作