热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码

PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码看看新闻网>看引擎>开源产品0人收藏此文章,

PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码

看看新闻网> 看引擎> 开源产品


0人收藏此文章,


发表于8小时前(2013-09-06 00:39) ,
已有 13次阅读 ,共 0个评论

           按照我一惯得套路,我会先说一点废话。PhoneGap和Cordova什么关系?为什么有的地方叫Cordova而有的地方叫PhoneGap ?PhoneGap是一款HTML5平台,通过它,开发商可以使用HTML、CSS及Javascript来开发本地移动应用程序。因此,目前开发商可以只编写一次应用程序,然后在6个主要的移动平台和应用程序商店(app store)里进行发布,这些移动平台和应用程序商店包括:iOS、Android、BlackBerry、webOS、bada以及Symbian。Apache Cordova是PhoneGap贡献给Apache后的开源项目,是从PhoneGap中抽出的核心代码,是驱动PhoneGap的核心引擎。大概意思也就是说:Cordova是由PhoneGap发展而来的,现在的Cordova就是当年的PhoneGap。所以下文中我来回的切换叫法,其实都是一个东西而已。

          下面言归正传,如何在PhoneGap或者Cordova框架下实现JS调用Android原生代码?(这里就不再啰嗦如何在Android程序中集成PhoneGap了)

     1.在你的html5中config.js定义你的Plugin的名称和方法。名为MyPlugin,有两个插件:一个为自动更新(Update),一个为密码锁定(PassLock)

       var MyPlugin = {
             UpDate: function (success, fail, url) {
             return  PhoneGap.exec(function (args) {
             success(args);
           }, function (args) {
            fail(args);
          }, ‘UpDate’, ‘Update’, [url]);
       },      
     PassLock: function (success, fail, url){
        return  PhoneGap.exec(function (args) {
            success(args);
        }, function (args) {
            fail(args);
        }, ‘PassLock’, ‘PassLock’, [url]);
     
     }
};

  2.在xml文件夹下的plugin里注册你的Plugin.

  
   


  3.自定义你的Plugin类和处理方法.(这里只贴出了自动更新插件的代码,很简单,只是作了一个跳转)

  public class UpdatePlugin extends Plugin {
      @Override
      public PluginResult execute(String arg0, JSONArray arg1, String arg2) {
        /*
       * 跳转到UpdateActivity
       */
          Intent intent = new Intent(ctx.getContext(),UpdateActivity.class);
          ctx.startActivity(intent);  
          String result = “跳转至UpdateActivity”; 
          PluginResult pluginResult = new PluginResult(Status.OK, result);
          return pluginResult;
       }
    }

  4.在你的JS中调用你的插件。

    //自动更新
    upDate: function () {
        //调用android原生的方法检查并更新
       MyPlugin.UpDate(function(){},function(){},’这里是一个参数,我这里不涉及参数的使用,所以随便写’);
    },
    passLock: function(){
      //调用android原生的方法进行密码锁定有关操作
        MyPlugin.PassLock(function(){},function(){},’这里是一个参数,我这里不涉及参数的使用,所随便写‘);
    },

  5.测试,当你点击你的某个按钮或者链接执行你的update:function这个JS,然后在JS里调用了MyPlugin下的Update插件,这个插件在config.js里被定义,在plugin.xml中被注册,插件具体执行的地方时UpdatePlugin里的execute()方法。执行完这个方法后,你就已经调用了Android的原生代码咯,当然我这里是设置成了跳转到另外一个Activity.

   所需工具打包下载:http://pan.baidu.com/share/link?shareid=1636341858&uk=2937351404


推荐阅读
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
author-avatar
手机用户2502856573
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有