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 相关文章推荐
JavaScript 动态改变图片大小
Jun 11 Javascript
jquery常用技巧及常用方法列表集合
Apr 06 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
Aug 02 Javascript
最好用的省市二级联动 原生js实现你值得拥有
Sep 22 Javascript
利用了jquery的ajax实现二级联互动菜单
Dec 02 Javascript
js 动态加载事件的几种方法总结
Dec 25 Javascript
基于jquery实现动态竖向柱状条特效
Feb 12 Javascript
Bootstrap组合上、下拉框简单实现代码
Mar 06 Javascript
js时间查询插件使用详解
Apr 07 Javascript
详解Webpack DLL用法以及功能
Jul 11 Javascript
javascript 通过键名获取键盘的keyCode方法
Dec 31 Javascript
js实现数字滚动特效
Dec 16 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 新手入门教程
2009/08/03 PHP
php使用异或实现的加密解密实例
2013/09/04 PHP
php字符集转换
2017/01/23 PHP
PHP实现的服务器一致性hash分布算法示例
2018/08/09 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
自动更新作用
2006/10/08 Javascript
document.createElement()用法
2013/03/13 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
Python3如何解决字符编码问题详解
2017/04/23 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
python用什么编辑器进行项目开发
2020/06/17 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
如何写毕业求职自荐信
2013/11/06 职场文书
办公室内勤工作职责
2013/12/11 职场文书
奥巴马演讲稿
2014/01/08 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
2014年妇女工作总结
2014/12/06 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
新员工实习期个人工作总结
2015/10/15 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript