美文网首页
phoneGap插件开发-多参数和返回值

phoneGap插件开发-多参数和返回值

作者: prostory | 来源:发表于2017-02-27 15:47 被阅读0次

    标签(空格分隔): Android phoneGap


    在编写PhoneGap插件时,要传递多个参数,需要将参数保存在一个参数数组中,然后PhoneGap会自动将参数数组保存在JSONArray对象中;如果要获取返回值,需要编写回调方法将返回值通过参数传递到回调方法中,示例代码(myplugin.js)如下:

    /**
     * 构造方法
     */
    
    function MyPlugin() {
    };
    
    /**
     * 字符串相加
     *
     * @param str1, str2
     */
    MyPlugin.prototype.addStr = function(successCallback, failureCallback, str1, str2) {
        PhoneGap.exec(successCallback, failureCallback, "MyPlugin", "addStr", [str1, str2]);
    };
    
    /**
     * 加载MyPlugin对象
     */
    PhoneGap.addConstructor(function() {
        PhoneGap.addPlugin("myPlugin", new MyPlugin());
    });
    

    然后在Java代码中调用JSONArray的getString(int index)方法获取JSONArray中的参数,通过index指定参数的索引就可以取得多个参数了;在Java代码中,返回值是保存在PluginResult对象中的,PluginResult保存了状态和返回值。如果状态为OK,则回调successCallback方法,并将返回值传递到该方法中;如果状态为JSON_EXCEPTION,则回调failureCallback方法,并将错误信息传递到该方法中。示例代码(MyPlugin.java)如下:

    package com.litsoft.phonegap;
    
    import org.apache.cordova.api.PluginResult;
    import org.json.JSONArray;
    import org.json.JSONException;
    import com.phonegap.api.Plugin;
    public class MyPlugin extends Plugin {
    
        @Override
        public PluginResult execute(String action, JSONArray args, String callbackId) {
            PluginResult.Status status = PluginResult.Status.OK;
            String result = "";
            try {
                if(action.equals("addStr")){
                    result = addStr(args.getString(0), args.getString(1));
                }else{
                    status = PluginResult.Status.INVALID_ACTION;
                }
            
                return new PluginResult(status, result);
            } catch (JSONException e) {
                return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
            }
        }
    
        /**
         * 两个字符串相加
         * 
         * @param str1
         * @param str2
         * @return
         */
        
        private String addStr(String str1, String str2){
            return str1 + str2;
        }
    }
    

    最后在html中调用插件中的方法,通过调用addStr方法就可以将两个输入框的值传递到后台Java代码中运行,后台Java将返回值存储在PluginResult对象中,通过编写回调方法successCallback就可以获取返回值了。示例代码(index.html)如下:

    <!DOCTYPE HTML>
    <html>
    <head>
    <title>PhoneGap</title>
    <script type="text/javascript" charset="utf-8" src=\'#\'" /span>
    </script>
    <script type="text/javascript" charset="utf-8" src=\'#\'" /span>
    </script>
    <script type="text/javascript" charset="UTF-8">
        function add(){
            var str1 = document.getElementById("str1Id").value;
            var str2 = document.getElementById("str2Id").value;
            window.plugins.myPlugin.addStr(successCallback, failureCallback, str1, str2);
        }
    
        //成功时回调的方法
        function successCallback(data){
            document.getElementById("resultId").value = data;
        }
    
        //失败时返回的方法   
        function failureCallback(data){
            alert("error:"+ data);
        }
    </script>
    </head>
    
    <body>
    <input type="text" id="str1Id"/>
    <br />
    <input type="text" id="str2Id" />
    <br />
    <input type="text" id="resultId" />
    <input type="button" value="add" onclick="add();" />
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:phoneGap插件开发-多参数和返回值

          本文链接:https://www.haomeiwen.com/subject/vqbzwttx.html