给Android开发者的Ionic自定义插件

首先需要把Ionic的环境搭好,这里我就不废话了,相信看到这篇文章的各位都已经是使用过Ionic的人了

直接上教程

1.创建插件

通过命令行创建插件

 格式:plugman create --name <pluginName> --plugin_id <pluginID> --plugin_version

PS:

--name:插件名称

--plugin_id:插件id

--plugin_version:插件版本

plugman create --name ShowToastPlugin --plugin_id com.jamingx.showtoastplugin --plugin_version 1.0.0

 

创建插件后,就能看到对应的目录下面有这个插件的文件夹

 

插件的目录结构:

 

2.编写android端插件的代码(主要就是编写java代码和js代码)

作为一个Android程序猿,推荐使用Android Studio进行开发

 

首先新建一个Android项目,这个我就不多说

上图就是创建好的Android项目

我们本次就开发一个比较简单的插件,就是调用Android系统的Toast。

由于是要开发Ionic的插件,所以首先是要引入相关的框架,首先我们要下载相关的框架:

https://github.com/apache/cordova-android

下载

这个就是下载好的压缩包,我们进行解压

解压完将看到以下的目录结构,我们主要使用的是framework里面的东西

接下来我们就把framework文件夹复制到我们刚刚创建的Android项目的根目录

如上图,复制到这个目录下来

接着下,我们切换到Android Studio进行配置框架

1):打开Android项目根目录下的settings.gradle进行编辑

2):添加 ’:framework’ 

3):点击 Sync Now 进行同步刷新

此时我们app文件夹里面的使用framework文件夹的内容,还需要将它们关联起来

如下图操作

然后一直ok就行了

 

接下来我们开始编写java代码了

先创建一个类,这个我也不多说了

让这个类继承CordovaPlugin类(CordovaPlugin类是需要引入和关联framework才有的)

接下来我们复写一下execute()方法

上面的代码主要就是弹出Toast(注:execute不是在主线程,我们需要切换到主线程才能弹出Toast)

代码:

package com.jamingx.ionicshowtoastplugin;

import android.util.Log;
import android.widget.Toast;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CordovaWebView;
import org.json.JSONArray;
import org.json.JSONException;

public class ShowToastPlugin extends CordovaPlugin {
    private static final String SHOWTOAST = "showToast";

    /**
     * 执行函数,对应js的 cordova.exec() 方法
     * @param action          The action to execute.
     * @param args            The exec() arguments.
     * @param callbackContext The callback context used when calling back into JavaScript.
     * @return
     * @throws JSONException
     */
    @Override
    public boolean execute(final String action, final JSONArray args, CallbackContext callbackContext) throws JSONException {
        Log.e("ShowToastPlugin","ionic 插件");
        if (action.equals(SHOWTOAST)){
            showToast(args.getString(0));
        }
        return super.execute(action, args, callbackContext);
    }
    /**
     * 初始化
     * @param cordova
     * @param webView
     */
    @Override
    public void initialize(CordovaInterface cordova, CordovaWebView webView) {
        super.initialize(cordova, webView);
    }
    private void showToast(final String text){
        cordova.getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(cordova.getContext(),text,Toast.LENGTH_SHORT).show();
            }
        });
    }
}

 

接下来我们把java代码放到插件目录下的src目录(例如我放在 src/android/ShowToastPlugin.java)

在插件目录的的www目录下编写js代码(www/ShowToastPlugin.js):

代码:

var exec = require('cordova/exec');

var showToastPlugin = {};

var showToast_api = function (arg0, success, error) {
    exec(success, error, 'ShowToastPlugin', 'showToast', [arg0]);
};

showToastPlugin.showToast = function(arg){
	showToast_api(arg,function(success){
		console.log("success:" + success);
	},function(error){
		console.log("error:" + error);
	})
};

module.exports = showToastPlugin;

 

3.配置插件(plugin.xml)

代码:

<?xml version='1.0' encoding='utf-8'?>
<plugin id="com.jamingx.showtoastplugin" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
    <name>ShowToastPlugin</name>
    <js-module name="ShowToastPlugin" src="www/ShowToastPlugin.js">
        <clobbers target="cordova.plugins.ShowToastPlugin" />
    </js-module>
	
	<platform name="android">
    <config-file target="res/xml/config.xml" parent="/*">
      <feature name="ShowToastPlugin">
        <param name="android-package" value="com.jamingx.ionicshowtoastplugin.ShowToastPlugin"/>
      </feature>
    </config-file>
 
    <source-file src="src/android/ShowToastPlugin.java" target-dir="src/com/jamingx/ionicshowtoastplugin/ShowToastPlugin"/>

  </platform>
	
</plugin>

PS:

name -> 插件名称(对应js文件的exec()第3个参数)

js-module -> clobbers target -> 调用时的名称

config-file -> param -> 插件的完整类名

source-file -> src="src/android/ShowToastPlugin.java" (插件的java文件)

source-file -> target-dir="src/com/jamingx/showtoastplugin/ShowToastPlugin"(拷贝到的目录,一般和包名对应)

 

最后打开命令行cd到插件的目录,npm init 初始化插件即可。

 

这样,一个插件就开发完成了,现在我们进行测试

添加插件命令

ionic cordova plugin add (path)

例如:

ionic cordova plugin add E:\IonicProjects\Plugins\ShowToastPlugin

 

移除插件命令

ionic cordova plugin remove 插件id(一开始创建的那个id)

例如:

ionic cordova plugin remove com.jamingx.showtoastplugin

 

4.测试插件

首先我们创建一个ionic项目

ionic start TestShowToastPlugin --v4 --skip npm

PS:

TestShowToastPlugin :项目名称(自定义)

--skip-npm:跳过npm安装

接着选择blank的模板

选择 y

 

进度条走完以后,然后一路按照自己的需求选择即可。

接着cd 到刚刚创建的目录

执行命令:cnpm install --save

PS:如果没有 cnpm 命令,请先安装:npm install -g cnpm

至此,项目就创建完毕了。

接下来我这里开始用到的软件是WebStorm

首先把插件添加到项目进去

执行命令:

ionic cordova plugin add E:\IonicProjects\Plugins\ShowToastPlugin

添加完成以后,接下来开始测试插件功能

我们测试的功能就是点击一个按钮弹出Toast

编辑src/pages/home/home.ts

 

如图增加代码:

declare let cordova: any;

showToast(text){
    cordova.plugins.ShowToastPlugin.showToast(text);
  }

 

接着编辑src/pages/home/home.html

添加一个按钮

<button (click)="showToast('Test Show Toast')">ShowToast</button>

逻辑很简单,就是点击ShowToast按钮就调用了 showToast(text) 方法

然后编译运行项目:

ionic cordova run android  

PS:此时需要插上Android手机,并且启用调试模式

运行结果:

至此,Ionic自定义插件就完成了

插件地址:

https://github.com/jamingx/Demo-IonicShowToastPlugin

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值