Androidプラットフォームの下で、Cordoverプラグインをカスタマイズします.

3268 ワード

Cordova公式のプラグインを使う以外に、自分でプラグインを書いて、業務の需要を満たします.
Androidプラットフォームでは、各プラグインは2つの部分から構成されています.
  • プラグインのJavaScriptファイル
  • プラグインのJAVA類
  • プラグインを作成するJavaScript
    プラグインがあるディレクトリassets/www/plugins/は、Cordovaのプラグインを追加すると、次の図が見えます.
    Cordova自身のプラグインがすべて定義されていることが見えます.そのパッケージ名で名付けられたフォルダの下のwwwディレクトリの中で、私達もこの約束に従ってJSを作成し、パッケージ名をcom.test.pluginと指定します.
    JSの内容は以下の通りです
    // "com.test.plugin.PluginTest"        ID
    cordova.define("com.test.plugin.PluginTest", function (require, exports, module) {
    
        var exec = require('cordova/exec');
    
        function PluginTest() {
        }
    
        PluginTest.prototype = {
                
            test1: function (params, successCallback, errorCallback) {
                //            ,   config.xml    feature.name    
                exec(successCallback, errorCallback, "PluginTest", "test1", [params]);
            },
            test2: function (params, successCallback, errorCallback) {
                exec(successCallback, errorCallback, "PluginTest", "test2", [params]);
            }
        }
    
        module.exports = new PluginTest();
    });
    
    
    プラグインを作成するJAVAクラスCordovaPluginクラスを継承し、execute方法を書き換える.クラス内の方法名はjs中の方法名と一致しており、検索が容易であることを約束する.
    package com.test.plugin;
    
    import org.apache.cordova.CallbackContext;
    import org.apache.cordova.CordovaPlugin;
    import org.json.JSONArray;
    import org.json.JSONException;
    
    import android.widget.Toast;
    
    public class PluginTest extends CordovaPlugin {
    
        /**
         *     execute  
         */
        @Override
        public boolean execute(String action, JSONArray args,
                CallbackContext callbackContext) throws JSONException {
            if("test1".equals(action)) {
                this.test1(args, callbackContext);
            }else if("test2".equals(action)) {
                this.test2(args, callbackContext);
            }else{
                return false;
            }
            return true;
        }
    
        private void test1(JSONArray args, final CallbackContext callbackContext)
                throws JSONException {
            //   worker  
            cordova.getThreadPool().execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println("Execute test1 method");
                    callbackContext.success("      ");
                }
            });
        }
    
        private void test2(JSONArray args, final CallbackContext callbackContext)
                throws JSONException {
            //  UI     
            cordova.getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(cordova.getActivity(), "Execute test2 method", Toast.LENGTH_SHORT).show();
                    callbackContext.error("      ");
                }
            });
        }
    
    }
    
    
    プラグインの設定
    以下はプラグインの設定です.Cordovaにプラグインが書いてあることを教えてください.res/xml/config.xmlファイルを開き、フィーチャーを追加します.
    Cordovaはconfig.xmlファイルを解析します.各フィーチャーは一つのpluginです.
    key
    desc
    フィーチャー.name
    pluginの名前
    android-package
    プラグインのjavaクラスを指定するには、パッケージ名を含む完全な名前が必要です.
    onload
    trueのために、webviewが読み込まれているという意味です.このプラグインをロードしますか?デフォルトはfalseです.このプラグインを使うと、ロードします.
    ここでプラグインが完了しました.JSでプラグインを呼び出す方法ができます.