当前位置:   article > 正文

ionic开发之Android平台echo插件编写_ionic echoplugin

ionic echoplugin

本文只是简单的简绍。适用于需要开发自己插件的同学

看了cordova的官方文档,介绍了很多内容,但是正真开发一个插件的详细流程却没有提及,后来看到一篇不错的文章并最终测通过。现在自己从新总结一下。本文是针对安卓平台开发cordova插件来介绍的。

1. 准备材料:

安装好npm ,cordova ,ionic等基本环境,然后通过命令ionic start demo tabs 创建一个新的工程,待会把创建好的插件,插入到这个项目里。当然最好事先运行命令:

cd demo,

ionic platform add android,

ionic build android.

Ionic run android(ionic emulate android ),

保证工程可以正确运行,然后再开始着手开发插件。

2. 安装plugman:

运行命令:npm install–g plugman 来全局安装plugman,全局安装以为这你可以在任何目录执行此命令。

3. 新建插件:

执行以下命令:

其中命令的格式为:plugman create –name <pluginName>--plugin_id <pluginID> --plugin_version <version>

我们建立插件运行的命令如下:

plugman create --name myEcho --plugin_id com.haha.myEcho --plugin_version0.0.1

执行完命令之后,会在执行命令的目录生成如下文件夹和文件,

其中www目录下为接口js文件,

src目录是用来放置本地平台下的本地代码

plugin.xml是插件的配置文件:


4. 在myEcho插件添加Android平台:

命令格式为:plugman platform add --platform_name <platform>

我们执行的命令为:

cd myEcho

plugman platform add --platform_name android

命令执行完之后,我们的src目录下就会多出一个Android目录以及目录下的一个java文件。


这里是测试了android平台,如果增加了其他平台,也会被放置在这个目录

5. 简单介绍plugin.xml文件:

  1. Id=”com.haha.myEcho” //定义了插件id
  2. <name>myEcho</name> //定义了插件的名字
  3. <js-module src=”www/myEcho.js” name=”myEcho”>
  4. <clobbers target=”cordova.plugins.myEcho”/> //定义了js调用插件的方法
  5. </js-module>
  6. 说明了插件js代码的路径和插件js接口的名称
  7. <platform name=”android”>
  8. <config-filetarget=”res/xml/config.xml” parent=”/*”> //指明config.xml插入的位置
  9. //在config.xml插入的内容
  10. <feature name=”myEcho”>
  11. <paramname=”android-package” value=”com.haha.myEcho.myEcho”/>
  12. </feature>
  13. </config-file>
  14. <config-filetarget=”AndroidManifest.xml” parent=”/*”/>
  15. //指定使用此插件会加入到安卓AndroidManifest.xml里面的权限项目
  16. <source-file src=”src/android/myEcho.java” target-dir=”src/com/haha/myEcho/myEcho”/>
  17. //支出插件本地代码的位置,以及插入到安卓平台源码的目录
  18. </platform>

6. 修改myEcho.js文件成为如下:

  1. var exec = require('cordova/exec');
  2. var echo = function(arg0, success, error) {
  3. exec(success, error, "myEcho","myEchofunction", [arg0]);
  4. };
  5. window.plugins = window.plugins || {};
  6. window.plugins.myEcho = echo;
  7. exports.myEcho = echo

7. 修改myEcho.java文件成为如下:

  1. package com.haha.myEcho;
  2. import org.apache.cordova.CordovaPlugin;
  3. import org.apache.cordova.CallbackContext;
  4. import org.json.JSONArray;
  5. import org.json.JSONException;
  6. import org.json.JSONObject;
  7. /**
  8. * This class echoes a string called fromJavaScript.
  9. */
  10. public class myEcho extends CordovaPlugin {
  11. @Override
  12. public boolean execute(String action,JSONArray args, CallbackContext callbackContext) throws JSONException {
  13. if(action.equals("myEchofunction")) {
  14. String message =args.getString(0);
  15. this.myEcholocal(message,callbackContext);
  16. return true;
  17. }
  18. return false;
  19. }
  20. private void myEcholocal(Stringmessage, CallbackContext callbackContext) {
  21. if (message != null &&message.length() > 0) {
  22. callbackContext.success(message);
  23. } else {
  24. callbackContext.error("Expected one non-empty stringargument.");
  25. }
  26. }
  27. }

8. 安装插件:

切换到需要增加插件的工程目录:运行命令

注意:插件工程目录与需要加入插件的工程目录在同一父目录下。

增加插件:cordova plugin add ../myEcho 


在项目的plugins目录可以看到如下:

 

9. 移除插件:

如果你想移除插件,可以通过如下步骤:

先列出当前项目已经安装的插件:cordova plugin list


然后运行命令移除myEcho:cordova pluginremove com.haha.myEcho


10.        调用插件:

在需要增加插件的项目里,打开一个controllers.js文件。即你想调用插件的页面的controller里面。由这里使用的是 通过命令ionic start demotabs创建的工程。所以打开其工程下的www/js/controllers.js代码,并增加如下代码:

  1. window.plugins.myEcho("echo my text",
  2. function(data) {
  3. alert(data);
  4. },
  5. function(error) {
  6. alert(error);
  7. });
  8. 增加完后整个文件如以下内容:
  9. angular.module('starter.controllers', [])
  10. .controller('DashCtrl', function($scope) {})
  11. .controller('ChatsCtrl', function($scope, Chats) {
  12. // With the new view caching in Ionic,Controllers are only called
  13. // when they are recreated or on appstart, instead of every page change.
  14. // To listen for when this page isactive (for example, to refresh data),
  15. // listen for the $ionicView.enterevent:
  16. //
  17. //$scope.$on('$ionicView.enter',function(e) {
  18. //});
  19. $scope.chats = Chats.all();
  20. $scope.remove = function(chat) {
  21. Chats.remove(chat);
  22. };
  23. })
  24. .controller('ChatDetailCtrl', function($scope, $stateParams, Chats) {
  25. $scope.chat = Chats.get($stateParams.chatId);
  26. })
  27. .controller('AccountCtrl', function($scope) {
  28. $scope.settings = {
  29. enableFriends: true
  30. };
  31. window.plugins.myEcho("echo mytext",
  32. function(data) {
  33. alert(data);
  34. },
  35. function(error) {
  36. alert(error);
  37. });
  38. });

意味着,当点击Accounttab的时候,就会弹出一个alert对话框。

11.安装并运行项目

在工程的目录下执行以下命令:

ionic build android

ionic run android 或 ionic emulateandroid

执行的效果如下:



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/160735
推荐阅读
相关标签
  

闽ICP备14008679号