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动态调整TextArea高度的代码
Dec 28 Javascript
js数组转json并在后台对其解析具体实现
Nov 20 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
Oct 20 Javascript
jQuery中选择器的基础使用教程
May 23 Javascript
Angular ng-class详解及实例代码
Sep 19 Javascript
微信小程序 网络请求(GET请求)详解
Nov 16 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 jQuery
详解vue axios中文文档
Sep 12 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
Mar 21 Javascript
js字符串倒序的实例代码
Nov 30 Javascript
微信小程序后端无法保持session的原因及解决办法问题
Mar 20 Javascript
ssm+vue前后端分离框架整合实现(附源码)
Jul 08 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分页代码学习示例分享
2014/02/20 PHP
如何使用php等比例缩放图片
2016/10/12 PHP
laravel实现按月或天或小时统计mysql数据的方法
2019/10/09 PHP
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
浅析vue数据绑定
2017/01/17 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
js+html制作简单验证码
2017/02/16 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
2018/05/28 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
详解javascript void(0)
2020/07/13 Javascript
[03:57]《不朽》——2015DOTA2国际邀请赛—中国军团出征主题曲MV
2015/07/15 DOTA
使用Python抓取模板之家的CSS模板
2015/03/16 Python
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
python获取交互式ssh shell的方法
2019/02/14 Python
python各层级目录下import方法代码实例
2020/01/20 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
请介绍一下Ant
2016/07/22 面试题
澳大利亚商务邀请函
2014/01/17 职场文书
一年级语文教学反思
2014/02/13 职场文书
《盲人摸象》教学反思
2014/02/16 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
竞选学委演讲稿
2014/09/13 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
2015年七一建党节慰问信
2015/03/23 职场文书
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL