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 相关文章推荐
IE与firefox之jquery用法区别
Oct 03 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
Oct 26 Javascript
常规表格多表头查询示例
Feb 21 Javascript
JQuery做的一个简单的点灯游戏分享
Jul 16 Javascript
jQuery中:gt选择器用法实例
Dec 29 Javascript
jQuery实现联动下拉列表查询框
Jan 04 Javascript
vue快捷键与基础指令详解
Jun 01 Javascript
BetterScroll 在移动端滚动场景的应用
Sep 18 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
Sep 18 Javascript
vue watch自动检测数据变化实时渲染的方法
Jan 16 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
Aug 24 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
Mar 06 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
带密匙的php加密解密示例分享
2014/01/29 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
vue实现商城上货组件简易版
2017/11/27 Javascript
vue2.0 elementUI制作面包屑导航栏
2018/02/22 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
python中urllib模块用法实例详解
2014/11/19 Python
python中实现php的var_dump函数功能
2015/01/21 Python
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
Python读取properties配置文件操作示例
2018/03/29 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
python实现自动化上线脚本的示例
2019/07/01 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
浅析Python3 pip换源问题
2020/01/06 Python
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
教师师德教育的自我评价
2013/10/31 职场文书
父亲生日宴会答谢词
2014/01/10 职场文书
国防教育标语
2014/10/08 职场文书
财务负责人岗位职责
2015/02/03 职场文书
综合实践活动报告
2015/02/05 职场文书
一篇带你入门Java垃圾回收器
2021/06/16 Java/Android