当前位置:编程学习 > JAVA >>

Developing a Plugin on Android 只拣实用的。。。


Developing a Plugin on Android

 

 


           详细介绍请直接点上面的地址,我这里只拣最最实用的。

           js中插件的使用需要以如下的形式调用方法,分别是回调成功函数,回调失败函数,布置在java端的服务,action(这个咋翻译。。),和参数列表。

 

[javascript]
xec(<successFunction>, <failFunction>, <service>, <action>, [<args>]); 

exec(<successFunction>, <failFunction>, <service>, <action>, [<args>]);

           插件的部署,还用说么。。。


[html]
<plugin name="<service_name>" value="<full_name_including_namespace>"/> 

<plugin name="<service_name>" value="<full_name_including_namespace>"/>
            接下来上实例。

           1,部署插件,写在config.xml里。

 

[html]
<plugin name="Echo" value="org.apache.cordova.plugin.Echo" /> 

<plugin name="Echo" value="org.apache.cordova.plugin.Echo" />


            2,java端实现,就是收到页面传递过来的参数后做什么处理

 

 

[java]
import org.apache.cordova.api.CordovaPlugin; 
import org.apache.cordova.api.PluginResult; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
 
/**
 * This class echoes a string called from JavaScript.
 */ 
public class Echo extends CordovaPlugin { 
    @Override 
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { 
        if (action.equals("echo")) { 
            String message = args.getString(0); //这里接收页面参数,按传参的顺序  
            this.echo(message, callbackContext); //传参时把当前的回调上下文传过去,必不可少  
            return true; 
        } 
        return false; 
    } 
 
    private void echo(String message, CallbackContext callbackContext) { 
        if (message != null && message.length() > 0) {  
            callbackContext.success(message); 
            //json对象也可以当作参数传回到页面  
           // JSONObject jsono = new JSONObject();             
           // jsono.put("message",message);  
           // callbackContext.success(jsono);  
 
 } else {  
callbackContext.error("Expected one non-empty string argument.");  
}  

import org.apache.cordova.api.CordovaPlugin;
import org.apache.cordova.api.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * This class echoes a string called from JavaScript.
 */
public class Echo extends CordovaPlugin {
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        if (action.equals("echo")) {
            String message = args.getString(0); //这里接收页面参数,按传参的顺序
            this.echo(message, callbackContext); //传参时把当前的回调上下文传过去,必不可少
            return true;
        }
        return false;
    }

    private void echo(String message, CallbackContext callbackContext) {
        if (message != null && message.length() > 0) {
            callbackContext.success(message);
            //json对象也可以当作参数传回到页面
           // JSONObject jsono = new JSONObject();          
           // jsono.put("message",message);
           // callbackContext.success(jsono);

 } else {
callbackContext.error("Expected one non-empty string argument.");
}
}
}

 

          3,js实现,就是页面的传值和回调,挺好理解的吧。


[javascript]
cordova.exec(successFunction, failFunction, "Echo","echo",[message]); //无参就写[],多个参数的顺序一定不能搞错  
 
function successFunction(e){ 
    alert(e);  //e就是传递的message  
    //如果在callbackContext.success中传递的是json对象,这里也可以直接读取。  
   // e.message  

 
function failFunction(e){ 
    //与successFunction同理,取决于callbackContext.error中传递的信息。  

cordova.exec(successFunction, failFunction, "Echo","echo",[message]); //无参就写[],多个参数的顺序一定不能搞错

function successFunction(e){
    alert(e);  //e就是传递的message
    //如果在callbackContext.success中传递的是json对象,这里也可以直接读取。
   // e.message
}

function failFunction(e){
    //与successFunction同理,取决于callbackContext.error中传递的信息。
}

 


           4,实用的就是这样,还有一点不能理解的是跟线程有关的,还是放在这里吧。第二种异步执行不跟上面讲的是一个效果么。。。

 

[java]
If you need to interact with the UI, you should use the following: 
 
@Override 
public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException { 
    if ("beep".equals(action)) { 
        final long duration = args.getLong(0); 
        cordova.getActivity().runOnUiThread(new Runnable() { 
  &nb

补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,