PhoneGap 3.4 插件开发心得,在Android应用上开发一个简单的分享插件

今天本人做了一个调用系统分享的插件,还是比较顺利的,PhoneGap提供了很好的API,开发者只需熟记,开发插件便不是一件难事。

心得概述

Android系统提供了分享的调用接口,可以向已安装的QQ、微信、微博等提供的分享接口来实现快速分享,但PhoneGap的展示是通过HTML实现的,HTML不可能直接调用Android系统的接口,这就需要一个简单的插件来实现。网上很多可用的代码,但PhoneGap的2.x与3.x版本存在差别,如execute方法的返回值类型不一样,故不能通用。
PhoneGap提供了插件父类CordovaPlugin,其execute方法与前端js的cordova.exec方法很好地实现结合,开发者在开发插件的时候,只需要继承CordovaPlugin重载execute方法,然后建立相应的js方法通过cordova.exec实现插件响应

开发步骤(以分享插件Share为例)

  1. 建立Share类,继承CordovaPlugin,重载public boolean execute(String action, JSONArray args, CallbackContext callbackContext)方法,其中String action是在前端js传过来的一个方法名称,args是在前端js传过来的参数(json),以下还是直接拷贝代码吧:

     package com.cool;
      
     import org.apache.cordova.CallbackContext;
     import org.apache.cordova.CordovaPlugin;
     import org.json.JSONArray;
     import org.json.JSONObject;
     import org.json.JSONException;
     import android.content.Intent;
      
     public class Share extends CordovaPlugin {
         @Override
         public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
             if (action.equals("share")) {
                 JSONObject jo = args.getJSONObject(0);
                 doSendIntent(jo.getString("subject"), jo.getString("text"));
                 return true;
             }
             return super.execute(action, args, callbackContext);
         }
      
         private void doSendIntent(String subject, String text) {
             Intent sendIntent = new Intent(android.content.Intent.ACTION_SEND);
             sendIntent.setType("text/plain");
             sendIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
             sendIntent.putExtra(android.content.Intent.EXTRA_TEXT, text);
             this.cordova.startActivityForResult(this, sendIntent, 0);
         }
     }
    
  2. 在config.xml文件中注册插件(放在中,这是PhoneGap 3.x的写法,与2.x不通用)

     <feature name="Share">
         <param name="android-package" value="com.cool.Share" />
     </feature>
    
  3. 建立js文件share.plugin.js

     var Share = {
         show:function(content, success, fail) {
             return cordova.exec( function(args) {
                 success(args);
             }, function(args) {
                 fail(args);
             }, 'Share', 'share', [content]);
         }
     };
      
     function shareClick(_subject, _text){
         Share.show({
                 subject: _subject,
                 text: _text
             },
             function() {}, // Success function
             function() {alert('分享失败')} // Failure function
         );
     }
    

    注释 cordova.exec:

     exec(<successFunction>, <failFunction>, <service>, <action>, [<args>]);
    
  4. 页面加载JS,监听分享按钮

     <script src="js/share.plugin.js"></script>
    
     $('.sharebtn').on('touchend',function(){
         shareClick('分享标题', '分享内容');
     });
     //touchend只是演示,判断点击过程此处省略
    

至此,插件开发成功。

PhoneGap官方API:http://docs.phonegap.com/en/3.4.0/guide_platforms_android_plugin.md.html#Android%20Plugins

若您觉得我的博文对您有帮助,欢迎点击下方按钮对我打赏
打赏