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 相关文章推荐
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
Dec 02 Javascript
JavaScript获取页面上某个元素的代码
Mar 13 Javascript
jquery表单验证使用插件formValidator
Nov 10 Javascript
IE、FF浏览器下修改标签透明度
Jan 28 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
Sep 01 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
Nov 06 Javascript
js验证框架之RealyEasy验证详解
Jun 08 Javascript
Vue.js 表单校验插件
Aug 14 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
Nov 13 Javascript
webpack 从指定入口文件中提取公共文件的方法
Nov 13 Javascript
layer.open 获取不到表单信息的解决方法
Sep 26 Javascript
Openlayers实现地图的基本操作
Sep 28 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
我的论坛源代码(二)
2006/10/09 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
php生成mysql的数据字典
2016/07/07 PHP
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
vue全局组件与局部组件使用方法详解
2018/03/29 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
2019/10/11 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
Python实现带百分比的进度条
2016/06/28 Python
python验证码识别的实例详解
2016/09/09 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
python list转矩阵的实例讲解
2018/08/04 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
理货员的岗位职责
2013/11/23 职场文书
小学教师师德感言
2014/02/10 职场文书
投标担保书范文
2014/04/02 职场文书
艺术教育实施方案
2014/05/03 职场文书
工人先进事迹材料
2014/12/26 职场文书
干部培训工作总结2015
2015/05/25 职场文书
vue使用element-ui按需引入
2022/05/20 Vue.js