天天看點

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)。一個為password鎖定(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) {

        }, ‘passlock’, ‘passlock’, [url]);

     }

};

  2.在xml目錄下的plugin裡注冊你的plugin.

   <plugin name=”update” value=”com.gapsh.plugin.updateplugin”/>

    <plugin name=”passlock” value=”com.gapsh.plugin.passlockplugin”/>

  3.自己定義你的plugin類和處理方法.(這裡僅僅貼出了自己主動更新插件的代碼,非常easy。僅僅是作了一個跳轉)

  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原生的方法進行password鎖定有關操作

        myplugin.passlock(function(){},function(){},’這裡是一個參數,我這裡不涉及參數的使用,所随便寫‘);

  5.測試,當你點選你的某個button或者連結運作你的update:function這個js。然後在js裡調用了myplugin下的update插件,這個插件在config.js裡被定義。在plugin.xml中被注冊,插件詳細運作的地方時updateplugin裡的execute()方法。運作完這種方法後,你就已經調用了android的原生代碼咯。當然我這裡是設定成了跳轉到另外一個activity.

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

繼續閱讀