android webview与jquery mobile相互通信
最近做android项目中遇到要在webview中做与js交互相关的东东,涉及到js中调用android本地的方法,于是查了资料整理了一下android和js互相调用的过程。如下demo,demo的主要实现过程如下:通过加载本地的html文件(里面有js脚本),实现android本地方法和js中的交互。
第一步:
mainfest.xml中加入网络权限
- <uses-permission android:name="android.permission.INTERNET" />
 
第二步:
加载本地写好的html文件(定义好js中提供给android调用的方法 funFromjs(),和android提供给js调用的对象接口fun1FromAndroid(String name)),放在 assets目录下。
- <body>
 - <a>js中调用本地方法</a>
 - <script>
 - function funFromjs(){
 - document.getElementById("helloweb").innerHTML="HelloWebView,i'm from js";
 - }
 - var aTag = document.getElementsByTagName('a')[0];
 - aTag.addEventListener('click', function(){
 - //调用android本地方法
 - myObj.fun1FromAndroid("调用android本地方法fun1FromAndroid(String name)!!");
 - return false;
 - }, false);
 - </script>
 - <p></p>
 - <div id="helloweb">
 - </div>
 - </body>
 
第三步:
实现android工程与js交互的相关代码
android主题代码:
- @SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" })
 - @Override
 - protected void onCreate(Bundle savedInstanceState) {
 - super.onCreate(savedInstanceState);
 - setContentView(R.layout.activity_main);
 - //初始化
 - initViews();
 - //设置编码
 - mWebView.getSettings().setDefaultTextEncodingName("utf-8");
 - //支持js
 - mWebView.getSettings().setJavaScriptEnabled(true);
 - //设置背景颜色 透明
 - mWebView.setBackgroundColor(Color.argb(0, 0, 0, 0));
 - //设置本地调用对象及其接口
 - mWebView.addJavascriptInterface(new JavaScriptObject(mContext), "myObj");
 - //载入js
 - mWebView.loadUrl("file:///android_asset/test.html");
 - //点击调用js中方法
 - mBtn1.setOnClickListener(new View.OnClickListener() {
 - @Override
 - public void onClick(View v) {
 - mWebView.loadUrl("javascript:funFromjs()");
 - Toast.makeText(mContext, "调用javascript:funFromjs()", Toast.LENGTH_LONG).show();
 - }
 - });
 - }
 
js调用的android对象方法定义
- public class JavaScriptObject {
 - Context mContxt;
 - public JavaScriptObject(Context mContxt) {
 - this.mContxt = mContxt;
 - }
 - public void fun1FromAndroid(String name) {
 - Toast.makeText(mContxt, name, Toast.LENGTH_LONG).show();
 - }
 - public void fun2(String name) {
 - Toast.makeText(mContxt, "调用fun2:" + name, Toast.LENGTH_SHORT).show();
 - }
 - }
 
android webview与jquery mobile相互通信的更多相关文章
- android中四大组件之间相互通信
		
好久没有写有关android有关的博客了,今天主要来谈一谈android中四大组件.首先,接触android的人,都应该知道android中有四大组件,activity,service,broadca ...
 - Android+Jquery Mobile学习系列(9)-总结和代码分享
		
经过一个多月的边学习边练手,学会了Android基于Web开发的毛皮,其实开发过程中用Android原生API不是很多,更多的是HTML/Javascript/Css. 个人觉得基于WebView的J ...
 - PhoneGap+jQuery Mobile+Rest 访问远程数据
		
最近研究Mobile Web技术.发现了一个好东西-PhoneGap! 发现用PhoneGap+jQuery Mobile是一个很完美的组合! 本实例通俗易懂.适合广大开发人群:高富帅.白富美.矮穷戳 ...
 - 使用Jquery Mobile设计Android通讯录
		
本系列教程将指导大家一步步使用Jquery Mobile设计一个Android的通讯录应用.其中在应用的界面部分,将使用jQuery Mobile框架,并且会指导大家如何使Android中提供的web ...
 - jQuery Mobile发展新闻阅读器,适应iphone和android打电话
		
程序猿是很不赖,你知道. 我们经常新浪,腾讯.雅虎等各大网站看到上述新闻.他们还推出了自己的移动新闻阅读器.今天,我自己用的jQuery Mobile 为了实现这一功能,.图像大小上传限制的大小250 ...
 - jQuery Mobile开发的新闻阅读器,适应iphone和android手机
		
程序猿都非常赖.你懂的! 我们常常上新浪,腾讯.雅虎等各大站点上面看新闻.他们也都各自推出了自家的手机新闻阅读器.今天我自己使用jQuery Mobile 来实现这一功能.图片大小上传限制了大小250 ...
 - JQuery Mobile+cordova构建一个Android项目
		
1.安装Android开发环境 Android开发环境的安装,现在主要是由于不能访问谷歌站点,在windows下在host文件中添加一个对应的74.125.195.190 dl-ssl.goo ...
 - Android+Jquery Mobile学习系列(6)-个人信息设置
		
本节开始,进行代码的实战练习.我的这个App是管理保险客户信息的,数据采用Sqlite存储在本地手机上,第一次使用需要先登记自己的个人信息,这个功能非常简单,也无关紧要,我是拿这个练手,方便做后面复杂 ...
 - Android+Jquery Mobile学习系列(3)-创建Android项目
		
前两章分别对开发环境和Jquery Mobile基础知识进行了介绍,本章介绍创建一个Android项目,并使用WebView控件显示HTML数据. 首先创建一个Android Application项 ...
 
随机推荐
- 开发并发布依赖包,作为工具包供别人npm install
			
1.初识包及 npm 包的概念: nodejs 中的第三方模块叫包 不同于 nodejs 中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用 nodejs 中的包都是免费开源 ...
 - laravel7 搜索分页
			
html: <form action="{{url('http://www.yanbing.com/fang/index')}}" method="get" ...
 - 4.功能三:实现URL地址栏控制(15分) (1)获取到当前访问的控制器和方法(5分) (2)对当前访问的控制器和方法进行判断,有权限继续访问(5分) (3)无权限给出提示(5分)
			
<?php namespace app\admin\controller; use think\Controller; use think\Request; class Base extends ...
 - ESXI 虚拟化误删除管理端口Management Network (vmk0),导致无法访问后台解决方案
			
按F2开启控制台shell,启用后返回.按Alt+F1打开终端. 输入 esxcfg-vmknic -a -i 192.168.1.10 -n 255.255.255.0 "Manageme ...
 - 物理机迁移至vmware
			
使用用vmware vcenter converter standalone将物理机迁移到虚拟机. 6.2版本下载地址如下: https://www.filehorse.com/download-vm ...
 - MYSQL安装后自带用户的作用
			
user表中host列的值的意义% 匹配所有主机localhost localhost不会被解析成IP地址,直接通过UNIXsocket连接127.0.0 ...
 - ArcMap操作随记(4)
			
1.统计各省份公路长度 [标识]→[汇总]→[视图][创建] 2.用户登录分配 [创建渔网]→[连接] 3.城市超市影响范围 [创建泰森多边形]→[标识]→[汇总] 4.三维可视化分析 [构造视线]→ ...
 - 在命令行运行 python 抛出 ModuleNotFoundError 的解决方法
			
所要运行的 py 文件在子目录中,并且该文件引用了另一个子目录中的 py 模块.类似这样: 原因 在运行环境下, a.py 找不到 b.py 所以抛出 ModuleNotFoundError. 解决 ...
 - FatFs知识点总结[多篇转载]
			
一.实用简单的fatfs基础知识点总结: https://my.oschina.net/u/274829/blog/282135 二.深入点的FAT表解析: http://blog.chinaunix ...
 - 6月4日 python学习总结 装饰器复习
			
1. 装饰器的原理以及为什么要使用装饰器 在代码运行期间动态增加功能的方式,称之为"装饰器"(Decorator). 在不影响原代码结构的情况下为其添加功能 2. 装饰器的基本 ...