一个简单的Demo教你:Android和JS的互相调用

  • 搜了一下简单的示例,发现很多贴代码片段的,却没有没有贴完整项目的,自己稍微整理一下,给那些第一次接触JS和Java互相调用的同学。文章最后有项目源码地址。
  • JS调用Java方法示例
<html>
<body>
    <script language="javascript">
        function javaCallJsFunction(isHide) {
            var x = document.getElementById(‘div‘);
            x.className = "";
        }

        function js2java() {
            JSInterface.javaFunction();
        }
    </script>
    <style type="text/css">
.hide {
    display: none;
}
</style>

    <input type="button" onClick="js2java()"
        style="height: 200px; width: 200px" value="Call Java Fn">

    <div class="hide" id="div">
        <font color="#FF0000">this is a hide div~~~~</font>
    </div>
</body>
  • JS调用Java的方法解析
function js2java() {
 JSInterface.javaFunction();
}

其中JSInterface是native类的别名,相当于Java中的实例,javaFunction是native类里边声明的方法;注意一点是Android API 17及以上版本需要在方法需要声明注解@JavascriptInterface。

-Java接收JS调用和调用示例代码

public class JsInterface {
    private WebView mWebView;

    public JsInterface(WebView webView) {
        this.mWebView = webView;
    }

    @JavascriptInterface
    public void javaFunction() {
        new Handler(Looper.getMainLooper()).post(new Runnable() {
            @Override
            public void run() {
                //update UI in main looper, or it will crash
                Toast.makeText(mWebView.getContext(), "javaFunction had been called", Toast.LENGTH_SHORT).show();
            }
        });
    }

    public void javaCallJsFunction(int code){
        mWebView.loadUrl(String.format("javascript:payError("+code+")"));
    }
}
  • 函数javaCallJsFunction为Java调用JS代码

最后给上示例项目的源码:Android-JS-Call

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-08 11:37:56

一个简单的Demo教你:Android和JS的互相调用的相关文章

Kivy a to Z -- 一个简单的通过adb同步Android系统文件的工具

来兴趣时写了些Kivy的代码,调试却总感觉不是很方便.直接打包到public.mp3的方式太繁锁,用文件共享的软件又发现没有一个好用的, 用samba filesharing本来也只是慢,但是更新的版本之后就一直提示说wifi没有tethering,意思是wifi热点没有打开,但是打开了还是提示没有tethering. 找了个叫什么卓*力的文件管理器,下载了samba插件后输入用户名和密码死活不对,被搞得实在恼火,花了点时间写了个通过adb同步安卓文件的工具,用着也挺爽的. 事件为什么总是要搞得

一个简单的页面弹窗插件 jquery.pageMsgFrame.js

页面弹窗是网站中常用的交互效果,它可以强提示网站的某些信息给用户,或者作用于某些信息的修改等等功能. 这几天在做一个项目的时候,就顺捎把这个插件写一下,栽棵树,自己乘凉吧. 原创博文,转载请注明出处:http://www.cnblogs.com/dereksunok/p/3724764.html html代码: 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5

【转】WCF入门教程六[一个简单的Demo]

一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来学习的,我们学习WCF也是一样的.从简单来看(不包括安全.优化等相关问题),WCF的增删改查和WebForm相差无几.WCF只是把具体"实现"写在"Service端",而"调用"放在了"Client端".觉得有帮助别忘了点个赞哈,

无废话WCF入门教程六[一个简单的Demo]

wcf技术交流,同学习,同进步. 群号:89718412 一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来学习的,我们学习WCF也是一样的.从简单来看(不包括安全.优化等相关问题),WCF的增删改查和WebForm相差无几.WCF只是把具体“实现”写在“Service端”,而“调用”放在了“Client端”.觉得有帮助别忘了点个赞哈,谢谢哦~ 二

[小北De编程手记] Lesson 01 - AutoFramework构建 之 从一个简单的Demo聊起

写在最前面 这个系列的主旨是要跟大家分享一下关于自动化测试框架的构建的一些心得.这几年,做了一些自动化测试框架以及团队的构建的工作.过程中遇到了很多这样的同学,他们在学习了某一门语言和一些自动化测试的类库或者工具之后,打算进一步的提高.我想这个系列也许会帮助到你,我们一起从各个维度来看一看自动化测试框架的一些最佳实践.本人能力有限,如果有什么不正确的的地方还各位大牛指正. 聊聊自动化测试的初心 在开始具体的技术和理论之前,我们先来思考一下自动化测试的目的是什么?我简单的罗列了几点: 替代手工测试

Thrift RPC的一个简单c++ demo

Thrift是一种开源的跨语言的RPC服务框架,最初由facebook公司开发的,在2007年facebook将其提交apache基金会开源了.对于当时的facebook来说创造thrift是为了解决facebook系统中各系统间大数据量的传输通信以及系统之间语言环境不同需要跨平台的特性. 首先需要定义.thrift接口文件: namespace cpp project struct CompanyInfo{ 1: i32 id; 2: string name; 3: string desc;

如何用vs2013开发人员命令提示工具执行一个方法(一个简单的demo)

在任何一个编辑器中编写一个静态的Main方法,必须是静态且名为Main的方法,并将Main方法所在的类文件命名为yang.cs(这个名字随便命名),如图-1. 图-1 打开你的vs2013开发人员命令提示,如图-2. 图-2 注意图-2中的第一行是一个路径,将名为yang.cs的类文件放入到这个路径中,如图-3. 图-3 在vs2013开发人员命令提示中输入csc yang.cs,并按下回车键,如图-4. 图-4 再看看路径下发生了什么(生成了一个yang.exe的可执行程序),如图-5. 图-

学习Android开源项目-根据知乎日报API分析重构一个简单的知乎日报Android客户端

从今天开始准备开始根据之前学习的知乎日报纯净版来实现一个自己的知乎日报客户端. 每次写完的代码都会更新在Github上,每次完成一个既定目标,完成之后当天完成目标的检查并根据错误进行最优化重构. 项目地址:https://github.com/wylhyz/ZhihuDialyPrue

CXF webservice 一个简单的demo

新建一个maven项目(or下载cxf所需jar包),pom.xml如下 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.o