Phonegap 自定义插件

一、PhoneGap中js与Java之间相互调用分为同步和异步两种方式

1、同步:js调用Java类的方法,然后Java类的方法直接返回一个值给js端

2、异步:js调用Java类的方法,Java类的方法可能要处理一系列的事情。执行完后,通过回调把结果返回js端。

 

二、下面以Android为例,通过插件实现js调用java类中的方法

1.创建cordova 工程

2. 在Android Studio打开

3. 在Index.html

1
<button id= "showToast" >Show Toast</button>

4. 在Index.js中加入插件执行方法

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

在onDeviceReady中加入

1
document.getElementById( "showToast" ).addEventListener( "click" ,app.showToast);

 showToast方法就是调用插件的方法

1
2
3
4
5
6
7
8
showToast:  function (){
       cordova.exec(
                     function (){},
                     function (){},
                     "Toast" ,
                     "show" ,
                     [ "hello man" ]);
},

  5. 创建插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public  class  MyToast   extends  CordovaPlugin{
     @Override
     public boolean execute(String action, JSONArray args,
                            CallbackContext callbackContext) throws JSONException {
         if  ( "show" .equals(action)){
             show(args, callbackContext);
         }
         return  super .execute(action, args, callbackContext);
     }
 
     public void  show(JSONArray args, CallbackContext callbackContext){
         try  {
             Toast.makeText(cordova.getActivity(),args.getString(0), Toast.LENGTH_LONG).show();
         } catch  (JSONException e){
             e.printStackTrace();
         }
 
         callbackContext.success();
     }
}

 

1
继承CordovaPlugin, 并实现execute方法。 action对应exec的第四个参数

6. xml中config.xml配置

1
2
3
<feature name= "Toast" >
     <param name= "android-package"  value= "com.example.tostplugin.MyToast"  />
</feature>

  Toast对应exec的第三个参数, value值com.example.tostplugin.MyToast 为插件的包名。

7. 效果图

 



本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/p/7081147.html,如需转载请自行联系原作者