安卓与HTML简单的交互使用

实现通过java代码与HTML的一个互相操作。

准备工作:

1、新建Android工程,在布局文件中添加WebView控件。

2、准备一个HTML文件,放在src/main/assets文件夹下。

3、在java中得到webview,通过loadUrl找到assets下的HTML文件,必须设置webview能使用js(settings.setJavaScriptEnabled(true))加载显示如下效果:

简单的效果实现

一、点击HTML上sayHello按钮,可以得到java代码返回的字符串并显示

1 mWvShow.loadUrl("file:///android_asset/jsandjava.html");
2 mWvShow.addJavascriptInterface(new JsTest(), "jsObj");//将java中类映射到js中   jsObj为该类的一个对象名

JsTest是一个内部类,其中定义的方法与js中button调用的方法名一致。
1         @JavascriptInterface
2         public String sayHello() {
3             return "你好!!!";
4         }

js中封装的sayHello()方法:

1    function sayHello(){
2       var str = window.jsObj.sayHello();
3       document.getElementById("id_input").value = str;
4    }

var str = window.jsObj.sayHello();

通过window得到jsObj对象,通过其调用该类中的方法sayHello(),就可获取java方法中返回的字符串。

在js的button点击时调用方法:

1 <input type="button" value="sayHello" onclick="sayHello()"/>

演示效果:

二、点击HTML上showAndroidButton按钮,可以和activiy交互,让其进行一些UI的操作

因对象映射过一次,不需再次映射。在java中定义showAndroidButton()方法,同样方法名需和js中button调用的一致,即js调用的方法就是通过映射过去的对象调用的java里的方法,所以两者方法名必须一致。因为showAndroidButton()是在js中通过映射的对象来调用,不能直接更新UI需要通过runOnUiThread的方法来更新UI。

1         @JavascriptInterface
2         public void showAndroidButton(){
3             runOnUiThread(new Runnable() {
4                 @Override
5                 public void run() {
6                     btn_test.setVisibility(View.VISIBLE);
7                 }
8             });
9         }

js封装的方法:

通过对象调用类中的方法。

1    function showAndroidButton(){
2        window.jsObj.showAndroidButton();
3    }

HTML中button的定义,调用showAndroidButton()方法:

<input type="button" style="height: 40px "  value="showAndroidButton" onclick="showAndroidButton()"/>

三、点击excuteHtmlFun按钮,调用java内的excuteHtmlFun()方法,方法内调用js定义的showFromHtml(param)方法;

java内部类中的excuteHtmlFun()方法,方法内加载Url:

1         @JavascriptInterface
2         public void excuteHtmlFun(){
3             runOnUiThread(new Runnable() {
4                 @Override
5                 public void run() {
6                     mWvShow.loadUrl("javascript: showFromHtml('我很好!')");//调用js内的showFromHtml(param)方法
7                 }
8             });
9         }

js的showFromHtml(param)方法:

   function showFromHtml( param ){document.getElementById("id_input").value = "Java call Html : " + param;}

button内直接调用java类中的方法

1 <input type="button" style="height: 40px " value="excuteHtmlFun" οnclick="window.jsObj.excuteHtmlFun()"/>

出现效果就是点击按钮调用java的方法,java方法中使用了js的方法,显示在网页上。

转载于:https://www.cnblogs.com/lwandxcq/p/5668038.html

安卓与HTML简单的交互使用相关推荐

  1. Python基础之简单用户交互

    Python基础之简单用户交互 一.要求及目的 二.代码内容 三.学习总结 一.要求及目的 要求设计一个简单的计算程序 二.代码内容 # 简单计算 a = input("please inp ...

  2. 《交互式程序设计 第2版》一3.5 捕获简单用户交互行为

    本节书摘来华章计算机<交互式程序设计 第2版>一书中的第3章 ,第3.5节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区"华章 ...

  3. 注释和简单用户交互程序

    一.注释 Python的注释很简单,有两种方法: 1. #这是注释 改方法会注释掉该行"#"号后面的所有内容,注释掉的内容不会被运行 2. 1 '''这是注释 2 这是注释 3 这 ...

  4. 安卓Android与H5双向交互MathJax展示数学公式(源码+解析)

    安卓Android与H5双向交互MathJax展示数学公式(源码+解析) 博主就今天周五又做了个需求(安卓Android与H5交互),原来上线的功能是服务器配置过来的学习报告(一个H5页面)并提供原始 ...

  5. Scratch入门教程:第二节 简单的交互

    Scratch入门教程 第二节 简单的交互 文章目录 Scratch入门教程 一.人机交互 二.控制角色运动方向 三.角色的旋转方式 欢迎订阅 cratch入门教程:简单的交互. 一.人机交互 人机交 ...

  6. 安卓和后端服务器数据交互

    记录一下安卓和后端数据交互吧!数据传输框架OkHttp3 题外话::其实安卓和后端的数据交互也就相当于网页端和后端的交互一样.后端一样的写接口!传数据的变成了安卓端而已!由于公司要求都是写全套的,所以 ...

  7. 利用VRML设计简单的交互三维室内漫游场景

    利用VRML设计简单的三维室内漫游场景 利用3dmaxs建模 VRMLPad里编辑代码 利用3dmaxs建模 首先,利用3dmaxs或其他的建模工具建模.这里建的模很简单,因为小文件方便调试,示例中的 ...

  8. 攻防世界 mobile 安卓移动端简单题练习区 答题(1-12题解)

    序 1.easyjni 题目描述:无 题目思路: 获得一个apk,网易mumu模拟器 安装打开. 丢到JEB里面,先看一下配置文件 找标签name属性,看看主函数. 进主函数,解析一下看源代码.找到点 ...

  9. Android(安卓)一个简单的聊天界面的实现(eclipse实现)

    这几天刚刚学习一下安卓的编程,尝试制作了一个简单的聊天界面(还没有实现网络等后续功能)软件界面如图.(使用eclipse实现) 当输入一些内容后,聊天界面可以下拉显示更多的聊天信息,如下图 首先对这个 ...

最新文章

  1. 状态模式在领域驱动设计中的使用
  2. struts2值栈内部数据结构详解
  3. Linux下pdf读取乱码
  4. flink 8 state checkpoint savepoint区别
  5. 五分钟带你了解Django框架设计思想!
  6. Oracle收购云安全创企Palerra,以加强安全堆栈
  7. 关于listview上下滑动imageview图片混乱问题
  8. android studio连接服务端代码,Android studio - 无法连接到LDAP服务器(示例代码)
  9. Code Chef May Challenge 2019题解
  10. DataSet.Tables[].Rows[][]的用法
  11. (每日一题 day 002 - 模拟) 166. 分数到小数
  12. 基于深度学习模型+Attention机制的分类模型构建实践分析【以鸢尾花数据集为例】
  13. openCV无法打开源文件opencv2\opencv.hpp
  14. 水晶报表基本使用方法
  15. 单片机和4G模块通信总结(EC20)
  16. Invalid bound statement (not found): com.example.wyl.mapper.PeijianDAO.selectList异常错误
  17. 利用HY-SRF05 超声波模块实现超声波的测距避障
  18. 原装世嘉土星手柄(Sega Saturn)转USB小板,软硬件全开源
  19. html中怎么做彩虹,web前端入门到实战:纯CSS画动态彩虹
  20. 《C语言程序设计》江宝钏主编-习题1-6-解方程

热门文章

  1. php str_replice_详解PHP字符串替换str_replace()函数四种用法
  2. int** 赋值_关于Java语言复合赋值运算符的两个问题,快来瞧瞧
  3. PhpStorm 配置debug断点调试
  4. Linux笔记-centos7编译安装svn 1.14.1
  5. Java笔记-spring-rabbit框架中消息中header的添加
  6. 工具杂记-notepad++正则表达式匹配替换
  7. Qt与java web通过数据库实现数据展示同步
  8. Qt工作笔记-QDialogButtonBox的使用
  9. HTML作业-花店网页商城
  10. 地图上如何量方位角_楼承板厂家揭秘:压型钢板采购的7个坑之第2个坑_压型钢板如何在镀锌量上偷工减料?...