Js调用Java方法并互相传参的简单实例


Posted in Javascript onAugust 11, 2016

Js通过PhoneGap调用Java方法并互相传参的。

一、JAVA代码

写一个类,该类继承自Plugin并重写execute方法。

import org.json.JSONArray;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import com.phonegap.api.PhonegapActivity;
import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;

public class PluginTest extends Plugin {

 public static String ACTION = "hello";

  public PluginTest() {
  }

  /**
   * Executes the request and returns PluginResult.
   *
   * @param action     The action to execute.
   * @param args       JSONArray of arguments for the plugin.
   * @param callbackId  The callback id used when calling back into JavaScript.
   * @return         A PluginResult object with a status and message.
   */
  @Override
  public PluginResult execute(String action, JSONArray args, String callbackId) {
    try {
      JSONObject jsonObj = new JSONObject();//可以返回给JS的JSON数据
      if (action.equals("hello")) {
        String str1= args.getString(0); //获取第一个参数
        String str2= args.getString(1); //获取第二个参数
        jsonObj.put("str1", str1+"1"); //把参数放到JSONObject对象中
        jsonObj.put("str2", str2+"2");  //把参数放到JSONObject对象中
      }
      PluginResult r = new PluginResult(PluginResult.Status.OK,jsonObj);
      return r;
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

三、Javascript文件中注册插件

新建一个.js文件,并把该文件和phonegap文件放在同一目录。(新建一个simplePlugin.js文件)

var SimplePlugin = function() {};

//str1和str2是传到JAVA的参数
SimplePlugin.prototype.hello = function(successCallback, failureCallback, str1, str2) {
  // exec ?鹊??捣?e是: Success Callback, Failure Callback, Registered Plugin name:就是在XML文件配置的那个所对应的name,
  // 'hello'是传入Java文件的execute方法中的参数String action 
  // name (? HTML ?鬟M?淼???
  return PhoneGap.exec(successCallback, failureCallback, 'PluginTest', 'hello', [str1,str2]);
};

// 这里是 PhoneGap Plugin 的??裕?lugin 的名??有 Native Class 的名??e打?了,就是我???????入的那些
PhoneGap.addConstructor(function() {
  // Register the javascript plugin with PhoneGap
  PhoneGap.addPlugin('simpleplugin', new SimplePlugin());  //simpleplugin是插件名称, new SimplePlugin()实例化的是本Javascript的类名 

});

四、在HTML文件中调用方法

在html文件中引入phonegap和插件的js文件,调用方法

<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  <title>JAVA传参</title>
  <script src="phonegap.js"></script> <!--phonegap包-->
  <script src="js/jquery.js"></script>
  <script src="simplePlugin.js"></script><!--自定义的插件文件-->
  <script>  
  $(document).ready(function(e) {
    $("#btn_test").click(function(){
      window.plugins.simplePlugin.hello( 
        function(result) {
          alert("返回的第一个参数:"+result.str1+"返回的第二个参数"+result.str2);
        }, 
        function(error) {
        },
        "第一个参数",
        "第二个参数"
      );  
    });
  });
  </script>
  </head>
<body>
<button type="button" id="btn_test">Click Me!</button>
</body>
</html>

以上这篇Js调用Java方法并互相传参的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
不同浏览器对回车提交表单的处理办法
Feb 13 Javascript
判断某个字符在一个字符串中是否存在的js代码
Feb 28 Javascript
浅谈JavaScript正则表达式分组匹配
Apr 10 Javascript
浅析JavaScript回调函数应用
May 22 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
Jul 21 Javascript
Bootstrap3 Grid system原理及应用详解
Sep 30 Javascript
jQuery鼠标事件总结
Oct 13 Javascript
利用Vue.js实现checkbox的全选反选效果
Jan 18 Javascript
详解Vue生命周期的示例
Mar 10 Javascript
微信小程序视图template模板引用的实例详解
Sep 20 Javascript
vue router下的html5 history在iis服务器上的设置方法
Oct 18 Javascript
Vue源码解析之Template转化为AST的实现方法
Dec 14 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
Aug 11 #Javascript
基于js对象,操作属性、方法详解
Aug 11 #Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
Aug 11 #Javascript
Node.js中防止错误导致的进程阻塞的方法
Aug 11 #Javascript
浅谈js中对象的使用
Aug 11 #Javascript
js倒计时简单实现代码
Aug 11 #Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
Aug 11 #Javascript
You might like
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
PHP函数strip_tags的一个bug浅析
2014/05/22 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
Javascript 类与静态类的实现
2010/04/01 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
2012/08/22 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python+微信接口实现运维报警
2016/08/27 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
基于Python中的yield表达式介绍
2019/11/19 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
会计电算化个人自我评价
2013/11/17 职场文书
餐饮业创业计划书范文
2014/01/06 职场文书
职称评定自我鉴定
2014/03/18 职场文书
禁烟标语大全
2014/06/11 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
总经理岗位职责范本
2015/04/01 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书