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去除字符串的空格增强版(可以去除中间的空格)
Aug 26 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
Apr 10 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
Feb 01 Javascript
JS定义回车事件(实现代码)
Jul 08 Javascript
jQuery移除元素自动解绑事件实现思路及代码
May 31 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
Jan 23 Javascript
vue移动端UI框架实现QQ侧边菜单组件
Mar 09 Javascript
JavaScript轮播停留效果的实现思路
May 24 Javascript
浅谈vue方法内的方法使用this的问题
Sep 15 Javascript
JavaScript进制转换实现方法解析
Jan 18 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
Mar 06 Javascript
JS字符串补全方法padStart()和padEnd()
May 27 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
PHP MSSQL 存储过程的方法
2008/12/24 PHP
防止用户利用PHP代码DOS造成用光网络带宽
2011/03/01 PHP
php强制更新图片缓存的方法
2015/02/11 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
jQuery实现根据滚动条位置加载相应内容功能
2016/07/18 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
js实现搜索提示框效果
2020/09/05 Javascript
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
如何基于Python创建目录文件夹
2019/12/31 Python
Django admin组件的使用
2020/10/24 Python
给小学生的新年寄语
2014/04/04 职场文书
安全生产专项整治方案
2014/05/06 职场文书
大学生自我评价200字(4篇)
2014/09/17 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
python实现剪贴板的操作
2021/07/01 Python
Pandas 数据编码的十种方法
2022/04/20 Python
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python