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 获取页面的高度及滚动条的位置的代码
May 06 Javascript
IE本地存储userdata的一个bug说明
Jul 01 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
Apr 29 Javascript
Javascript基于AJAX回调函数传递参数实例分析
Dec 15 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
Sep 09 Javascript
基于Bootstrap的网页设计实例
Mar 01 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
Apr 20 Javascript
weebox弹出窗口不居中显示的解决方法
Nov 27 Javascript
Vue.js 踩坑记之双向绑定
May 03 Javascript
Vue使用虚拟dom进行渲染view的方法
Dec 26 Javascript
JS实现放烟花效果
Mar 10 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
Jun 17 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网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
JavaScript按位运算符的应用简析
2014/02/04 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
2017/03/02 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
[06:53]2018DOTA2国际邀请赛寻真——勇于创新的Vici Gaming
2018/08/14 DOTA
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
python Django模板的使用方法(图文)
2013/11/04 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
Python遍历pandas数据方法总结
2018/02/09 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
Python 查看list中是否含有某元素的方法
2018/06/27 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
Django框架模板用法入门教程
2019/11/04 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
美国美妆网站:B-Glowing
2016/10/12 全球购物
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
如何提高JDBC的性能
2013/04/30 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
2014业务员年终工作总结
2014/12/09 职场文书
承诺书范本大全
2015/05/04 职场文书
检讨书格式范文
2015/05/07 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
初中政治教学反思
2016/02/23 职场文书