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 相关文章推荐
js 调整select 位置的函数
Feb 21 Javascript
TextArea不支持maxlength的解决办法(jquery)
Sep 13 Javascript
node.js中的querystring.escape方法使用说明
Dec 10 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
May 14 Javascript
JS递归遍历对象获得Value值方法技巧
Jun 14 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
Sep 22 jQuery
微信上传视频文件提示(推荐)
Nov 22 Javascript
Vue数据绑定简析小结
May 07 Javascript
vue 使用鼠标滚动加载数据的例子
Oct 31 Javascript
ES6 Object.assign()的用法及其使用
Jan 18 Javascript
Vue 修改网站图标的方法
Dec 31 Vue.js
React中的Context应用场景分析
Jun 11 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与浏览器缓存的分析
2013/06/03 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
PHP培训要多少钱
2017/06/06 PHP
jQuery的一些特性和用法整理小结
2010/01/13 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
js实时获取系统当前时间实例代码
2013/06/28 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
Jquery方式获取iframe页面中的 Dom元素
2014/05/07 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
JS数组操作之增删改查的简单实现
2017/08/21 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
详解vue中axios的封装
2018/07/18 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
Python列表生成器的循环技巧分享
2015/03/06 Python
python实现批量下载新浪博客的方法
2015/06/15 Python
python 数据的清理行为实例详解
2017/07/12 Python
微信公众号token验证失败解决方案
2019/07/22 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
大专自我鉴定范文
2013/10/23 职场文书
高中英语教学反思
2014/02/04 职场文书
C++程序员求职信范文
2014/04/14 职场文书
第一节英语课开场白
2015/06/01 职场文书
中学教师读书笔记
2015/07/01 职场文书
mysql分表之后如何平滑上线详解
2021/11/01 MySQL
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript