自定义Cordova插件、Ionic插件开发

Windows创建Cordova插件实例 Windows创建Cordova插件实例一、环境配置二、创建Cordova插件三、安装和测试Cordova插件四、其它扩充 一、环境配置 1.查看node版本 C:\Users\butin>node -v v10.16.0 2.安装nodejs 如果没有安装,去 https://nodejs.org/en/download/ 下载然后安装。 3.使用npm安装cordova C:\Users... 阅读详情

CordovaPluginsDome

CordovaPluginsDome

自定义Cordova插件

第一步编写JAVA代码

1 命令行新建 项目

例如:

1 cordova create plugins  org.apache.cordova.plugs  plugins

2 cd  plugins

3 cordova platform add android

Cordova 会创建一个带CordovaLib (Library项目) 的 Android 项目,这个就是Cordova的库

文件,插件的开发基于这个Library

2 将项目导入eclispe 得到两个工程,展开工程目录如下:


其中,第一个工程MainActivity-CordovaLib就是我们要用的Library
第二个工程plugins 是一个依赖MainActivity-CordovaLib 的Android 项目

3 编写Android平台的 JAVA代码插件

  Java 代码可以直接在生成的项目中编写,也可以新创建一个单独的工程,这里我新创建一个Android 工程,目录结构如下:

这里写图片描述

1 新建ProgressDialogPlugin 类,继承CordovaPlugin

CordovaPlugin 是Cordova 的js桥,必须继承这个类,

2 重写继承自 CordovaPlugin的方法
  @Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
    throws JSONException
{

    if (args.getString(0) != null)
    {
        content = args.getString(0);
    }

    if (SHOWPROGRESS.equals(action))
    {

        showProgerss();
        return true;
    }
    else if (CLOSEPROGRESS.equals(action))
    {
        closeProgress();
        return true;
    }
    else
    {
        return false;
    }

}

   这里action 参数是指要执行的方法名,
   args 是在JS中传递过来的字符品参数数组
   showProgerss()和 closeProgress();是我们根据action 要选择执行的方法

private void closeProgress()
{
    if (dialog.isShowing())
    {
        dialog.dismiss();

    }
}

private void showProgerss()
{
    if (dialog==null)
    {
        dialog = ProgressDialog.createDialog(this.cordova.getActivity());
    }

    dialog.setMessage(content);
    if (!dialog.isShowing())
    {
        dialog.show();

    }

}

这里的MainActivity仅时为了测试插件代码,并不打包到插件中去。需要说明的是,一般情况下,插件不要带资源文件,因为资源文件会涉及到R文件的导入问题,在插件使用时,需要使用插件时手动导入R资源


第二步 编写js代码

1 用前端编辑工具打开刚才创建的Cordova项目, 我这里是用的WebStorm 目录结构如下:

这里写图片描述

2 新建文件夹,并相要用到的文件放到相应的文件夹下

这里写图片描述

3在www 文件夹下新建js 文件
/TODO 导入依赖库
var exec = require('cordova/exec');
var platform = require('cordova/platform');

module.exports = {
// TODO JS 中调用的 js方法,参数列表可根据业务需求定
showdalog: function (message) {

    //TODO 第三个参数为 参数(回调方法,null,类名,方法名,[参数1,参数2,……])
    exec(null,null, "ProgressDialogPlugin", "show", [message]);

},

closedalog: function () {

    //TODO 第三个参数为 参数(回调方法,null,类名,方法名,[参数1,参数2,……])
    exec(null,null, "ProgressDialogPlugin", "close", []);

}
}

js 文件必须改入相应的依赖模块,并且重写

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

第三步配置plugin.xml

Plugin.xml文件是Cordova 识别插件时最重要的文件,会根据这个文件生成Android 项目的源代码,如果这一步出现差错,前面所的有工作将前功尽弃。

这里写图片描述

参数说明
   Id="org.xiangbalao.progressdialog"  
  插件ID, cordova 将根据 ID生成 plugins 下的目录结构

<name>                      插件名
<description>                   插件描述
<author>                        作者
<keywords>                  关键字
<license>                       许可协议
<engine >                       支持的引擎及版本号
<platform name="android">       android 平台的配置
 <js-module>                    //指定JS路径
 <merges target="xiangbalao" />         这里是在JS中调该插件的前缀

<feature name="ProgressDialogPlugin">     插件名
 <param name="android-package"                  value="org.xiangbalao.progressdialog.ProgressDialogPlugin"/>  插件的完整类路径 </feature>

 Java 本地代码映射,由两部分组成,前面是在插件文件中的路径,后面是将要生成的JAVA源码的包路径名,就是要把这些文件放到哪个目录下
<source-file src="src/android/ProgressDialogPlugin.java"    插件中的目录 target-dir="src/org/xiangbalao/progressdialog"/>     // 将要生成的Android 源码中的存放目录
举例
 <?xml version="1.0" encoding="UTF-8"?>
 <plugin
    xmlns="http://apache.org/cordova/ns/plugins/1.0"
    xmlns:android="http://schemas.android.com/apk/res/android"
    id="org.xiangbalao.progressdialog"
    version="0.1.0">
<!--TODO 域名空间,插件ID,版本号 cordova 将根据 ID生成 plugins 下的目录结构 -->
<name>进度条</name><!--插件名-->
<description>加载动画</description><!--插件描述-->
<author>longtaoge</author><!--作者-->
<keywords>progress</keywords><!--关键字-->
<license>Apache 2.0 License</license><!--许可协议-->
<engines>
    <engine name="cordova" version=">=3.0"/>
    <!--支持的引擎及版本号-->
</engines>
<!-- TODO android 平台的配置-->
<platform name="android">
    <js-module src="www/progrress_dialog.js" name="progrress_dialog">
        <!--TODO  这里是在JS中调该插件的前缀-->
        <merges target="xiangbalao" />
    </js-module>
    <config-file target="res/xml/config.xml" parent="/*">
        <feature name="ProgressDialogPlugin">
            <!--TODO 插件的完整类路径-->
            <param name="android-package" value="org.xiangbalao.progressdialog.ProgressDialogPlugin"/>
        </feature>
    </config-file>
    <!--TODO Java 本地代码映射,由两部分组成,前面是在插件文件中的路径,就是要把这些文件放到哪个目录下 -->
    <source-file src="src/android/ProgressDialogPlugin.java" target-dir="src/org/xiangbalao/progressdialog"/>
    <source-file src="src/android/ProgressDialog.java" target-dir="src/org/xiangbalao/progressdialog"/>
    <source-file src="src/android/pageload_icon1.png" target-dir="res/drawable-hdpi"/>
    <source-file src="src/android/pageload_icon2.png" target-dir="res/drawable-hdpi"/>
    <source-file src="src/android/styles.xml" target-dir="res/values"/>
    <source-file src="src/android/progress_round2.xml" target-dir="res/anim"/>
    <source-file src="src/android/customprogressdialog.xml" target-dir="res/layout"/>
</platform>

第四步发布

1发布到 github

在github 上创建仓库,将 代码提交到git仓库即可

目录结构如下

这里写图片描述

2发布到本地

新建文件夹,将三部分代码拷贝到要发布的目录即可

目录结构如下

这里写图片描述

第五步使用

1远程仓库
1 cordova plugin add  https://github.com/longtaoge/CodovaProgressDialog.git

这里 https://github.com/longtaoge/CodovaProgressDialog.git 是仓库地址
2 如果插件用到了资源文件 将 import org.apache.cordova.plugs.R; 
  修改为 AndroidManifest.xml 中的 package="xx.xxx.xxxxxx.xxx" 包名   例如 package="org.apache.cordova.plugs" 
  则改为 import  org.apache.cordova.plugs.R;3 方法调用,例如:  xiangbalao.showdalog("正在加载数据...");    //打开进度条
  xiangbalao.closedalog();     //关闭进度条

这里的  xiangbalao 前缀是指在plugin.xml中配置的参数   方法名是 js文件中提供的方法
<js-module   src="www/progrress_dialog.js" name="progrress_dialog">
         <merges target="xiangbalao" />   这里是在JS中调该插件的前缀
 </js-module>
2本地仓库
cordova plugin add  F:\my_plugindir    //这里是指插件本地路径

使用方法同上.

示例项目源码地址:

https://github.com/longtaoge/CordovaPluginsDome/tree/master

示例使用方法

1 cordova plugin add  https://github.com/longtaoge/CodovaProgressDialog.git

2 将 import org.apache.cordova.plugs.R; 
   修改为 AndroidManifest.xml 中的 package="xx.xxx.xxxxxx.xxx" 包名
   例如 package="org.apache.cordova.plugs" 则改为 import  org.apache.cordova.plugs.R;

3 提供的方法
  xiangbalao.showdalog("正在加载数据...");    //打开进度条
  xiangbalao.closedalog();     //关闭进度条
Cordova_TypeScript_RequireJS_:使用RequireJS加载模块的示例VS 2015 Apache Cordova + TypeScript项目 Visual Studio Apache Cordova + TypeScript + RequireJS 目的: 使用此README.md和代码为使用Visual Studio 2015,TypeScript,Apache Cordova和RequireJS启动项目提供路线图。 这些说明仅适用于VS2015。这只是一个起点。 该演示的源代码位于RequireJS_Cordova文件夹中。 使用Visual Studio 2015打开RequireJS_Cordova.sln 。 笔记。 发布前请下载TypeScript 1.5。 如果您遇到任何问题,有任何建议等,请与我联系。 @deanbiele github.com/dbiele VS 2015的扩展。 使用VS 2015工具>扩展和更新可在VS中自动下载和安装扩展。 否则,请单击链接以手动安装。 Web基本知 立即下载

相关推荐

银河麒麟V10新特性解析:从安装到AI应用的全面指南

本文全面解析银河麒麟V10操作系统的新特性,从安装指南到AI应用开发,详细介绍了其智能调度引擎、神经网络加速和场景化AI工具集等核心功能。通过实战案例展示如何高效配置AI环境、优化性能,并解决常见问题,助力开发者在国产操作系统上实现高效AI开发与应用部署。

seed的博客 301

Cordova插件的简单使用

Cordova插件的简单使用

silencefly的博客 1972

40岁从智驾转具身智能之路

我的工作经历比较复杂,本科毕业后工作2年再次读研的,本科和硕士都是机械专业,硕士毕业后干了5年CAM和机器人再转入到自动驾驶行业。在自动驾驶干了8年,发现自动驾驶已经到了一个瓶颈,再次转行做具身智能。我就谈谈自己的最近这次转型之路。

hzm8341的博客 638

Cordova系列之插件的使用以及自定义插件

在上一篇博客初探Cordova中介绍了下Cordova,并创建了个Cordova的项目运行了下,文章中也说到插件是Cordova比较核心的东西了,本篇博客主要开看一下插件怎么用以及怎么自定义插件除了使用官方或三方提供的插件,很多时候我们还需要自定义插件去处理一些业务相关的逻辑。这里我挑重点说Cordova插件就是js跟原生进行交互的桥梁,主要方向是js调原生插件至少包含两部分,js代码和原生代码,js负责导出方法给前端调用,原生负责实现业务逻辑以及通知js执行结果js调原生最终都是通过执行的。

喻志强的博客 8770

Windows下QT5.15.2安装MQTT模块全攻略(附分支选择避坑指南)

本文详细介绍了在Windows环境下为QT5.15.2安装MQTT模块的完整流程,包括环境准备、源码获取、编译配置及项目集成等关键步骤。特别针对分支选择、依赖项处理和常见错误提供了实用解决方案,帮助开发者高效完成MQTT模块的安装与调试,适用于物联网开发场景。

weixin_29224589的博客 466

优化NEXYS A7开发板(Xilinx Artix-7)Microblaze核的FLASH读写性能实战

本文针对NEXYS A7开发板(Xilinx Artix-7)上Microblaze核读写FLASH速度慢的问题,提供了系统性的优化实战指南。通过深入分析SPI控制器配置、Flash指令模式选择、Microblaze核的Cache与硬件加速器优化,以及程序运行位置(BRAM vs DDR)的调整,有效将FLASH读写性能从“龟速”提升至接近理论峰值。文章结合实测数据,为FPGA嵌入式开发者提供了清晰的性能瓶颈分析与解决方案。

carrot的博客 256

android 中ionic JavaScript调用原生代码

通过插件来调用本地代码。 示例代码如下: 首先在ionic工程中定义插件:myPlugTest,并加入到工程中。 然后在各个相关文件中增加如下代码: ------------------------------------------------------------------------ js代码如下(myPlugTest.js): cordova.define("com

benbenxiongyuan的专栏 6670

51雾化器实现

1. 雾化器简介 雾化器是将试液雾化的一种器械。雾化器是原子化系统的重要部件,其性能对测定的精密度和化学干扰等产生显著影响。因此要求雾化器喷雾稳定、雾滴细小、均匀和雾化效率高。雾化器的类型有超声雾化器,空气压缩式雾化器,网式雾化器。超声雾化器因其价格合适,适合家用,被广泛应用于加湿器,香薰机等各种小家电,也在医疗领域有很多的应用。家用雾化器的主要器件是一枚雾化片。 家用雾化器分为两种不同类别雾化片,实孔雾化片和微孔雾化片,这两种的喷雾方法和工作原理是有所不同的。不同的雾化片需要特定的频率才能工作。 实孔雾

qq_42415953的博客 2万+

跨平台应用开发进阶(五十四)cordova自定义插件

在前期博文《ReactNative进阶(一):ReactNative 学习资料汇总》中,提到目前主流的移动跨平台技术方案大体可以分为三类,使用原生内置浏览器加载HTML5的Hybrid技术方案,采用此种方案的主要有CordovaIonic和微信小程序;使用JavaScript语言进行开发,然后使用原生组件进行渲染,采用此方案的主要有Weex和轻快应用;使用自带渲染引擎和自带原生组件来实现跨平台,采用此种方案的主要是Flutter。注意⚠️:存放自定义cordova插件目录不能有空格可能会报错!

IT全栈 华强工作室 3550

SAP物料主数据表结构全解析:ABAP开发与MM模块必知必会

本文深入解析SAP物料主数据的核心表结构,涵盖MARA、MAKT、MARC、MARD及MVKE等关键表。详细阐述了物料主数据在ABAP开发和MM模块中的存储逻辑与关联关系,帮助开发者和顾问高效处理数据查询、增强功能及业务故障排查,是掌握SAP物料管理基础的必读指南。

weixin_29216957的博客 379

Isaac Lab 强化学习全身控制策略 Sim2Real 宇树人形机器人训练部署 HOVER

《IsaacLab策略训练与部署指南》提供了在仿真和真实机器人上实现HOVER全身控制策略的完整流程。主要内容包括:1) Linux环境下的IsaacLab安装与HOVER资源库配置;2) 使用1024个并行环境训练教师/学生策略的详细步骤;3) 策略测试与评估方法;4) Sim2Sim仿真验证和Sim2Real真实机器人部署方案。本教程特别针对Unitree H1仿人机器人,包含运动数据准备、策略训练、性能评估到硬件部署的全链条实现方案,为机器人控制策略开发提供标准化参考框架。

机器人控制与仿真应用 3070

cordova vue插件开发_ionic2自定义cordova插件开发以及使用(Android)

如何写一个cordova 用于ionic2项目中呢,在搜索了一番之后,千篇一律,我都怀疑那些文章是不是全部都是复制来复制去的,而且都不是很详细。我自己也捣鼓了一下午,踩了很多坑。所以特此写这下这篇,记录一下。假设需求是 写一个日志插件,可以将日志写在手机的sdcard中。1.安装plugmannpm install -g plugman2.creat一个插件框架plugman creat --na...

weixin_34765290的博客 277

【Android逆向工程】第17章:反调试与反 Hook 对抗技术

本文介绍了Android应用常见的反调试技术及其对抗策略。主要内容包括: 反调试技术概述 分类:进程检测(ptrace、TracerPid)、文件检测、行为检测(时间/断点)、内存检测、框架检测 对抗思路:识别检测点→Hook检测函数→修改返回值→隐藏工具特征 ptrace检测实现 原理:利用ptrace系统调用检测调试器附加 实现方式:直接检测、持续线程检测、fork子进程检测 绕过方法:Frida Hook ptrace函数返回0,或使用LD_PRELOAD注入假函数 综合防护 涉及多种检测技术的组合使

w987333120的博客 359

ionic2 自定义cordova插件开发以及使用 (Android)

如何写一个cordova 用于ionic2项目中呢,在搜索了一番之后,千篇一律,我都怀疑那些文章是不是全部都是复制来复制去的,而且都不是很详细。我自己也捣鼓了一下午,踩了很多坑。所以特此写这下这篇,记录一下。 假设需求是 写一个日志插件,可以将日志写在手机的sdcard中。 1.安装plugman npm install -g plugman 2.creat一个插件框架 plug...

weixin_30828379的博客 109

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ionic插件基础(六)——自定义插件的demo

这是一个自定义插件的简单demo,演示了跟原生交互的过程

Lxr的博客 5161

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ionic3 自定义cordova插件的开发和调用(包含jar包调用,文件结构详解)

ionic3 自定义插件的开发和调用(包含jar包调用,文件结构详解)

yang__Y的博客 920

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ionic和ionic2 环境下编写自定义cordova插件

编写自定义的cordova插件,并在ionic1和ionic2的环境中使用

N4A的博客 5383

ionic5+如何调用cordova插件中的方法

ionic5+如何调用cordova插件中的方法环境安装cordova插件ionic调用cordova插件中的方法总结 目前为止,网上搜到的有关ionic的帖子都是4以下的,但是我的ionic-cli是5.4.4的,所以目录结构与网上说的有所差异,所以在用ionic开发的程序调用自定义cordova插件方法时,遇到了许多坑,特此说明一下,希望对更新到ionic5+的你有所帮助。废话不多说。 环境...

lzfengluo的博客 2463

Flink CDC 3.x 迁移实战:2.x 作业升级的完整决策与验收方案

把 jar 换掉之后,Flink CDC 的 2.x 同步作业死活起不来:堆栈里是 ClassNotFoundException,Savepoint 恢复直接报错,YAML 改了十几处还是失败。如果你正准备给公司跑在 DataStream/SQL 上的同步作业做 Flink CDC 3.x 版本迁移,先别急着动手,要回答的不是"配置怎么改",而是"你的作业该走哪条迁移路径"。 [![Flink

gitblog_01175的博客 409

混合开发项目总结一 (cordova插件的定义和使用)

最近刚刚完成了一个混合开发的项目,现在可以对此进行一些总结了。这个项目是用web开发的使用的框架是AngularJS和ionic的框架。iOS和Android(使用cordova创建工程)都使用同一套页面和JS代码。项目中用到了很多比较好的方案,整个项目没有很卡顿的感觉,个人觉得是个很好的学习代码。现在开始慢慢的啃这个骨头。 1.Cordova http://cordova.apach

CJXBShowZhouyujuan的博客 2178

cordova之自定义插件

一.创建一个android项目,编写插件功能,并测试ok,这里以一个简单的调用原生Toast.makeText为例。 1.新建android项目 2.编写插件类 package com.plugin.testPlugin; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaInter...

huifeidemao000的博客 445

iOS使用Object-C自定义cordova插件(-)

本系列教程为博主初次使用开发,内容如有差错,欢迎指正,敬请谅解。  博客地址:http://blog.img421.com/iosshi-yong-object-czi-ding-yi-cordovacha-jian/    Mac安装ionic和cordova我们已经熟悉,现在使用`ionic`来创建`HTML5`使用`iOS原生框架`等内容的插件。     说明:图中的cordo

super_man_ww的博客 4377

【Ionic+AngularJS 开发】之『个人日常管理』App(二)

准备工作 资源 预装工具 安装bower 1 npminstall-g bower 安装ngCordova 1 bowerinstallngCordova (*由于网络获...

weixin_34387284的博客 123
下一篇: 苹果的玫瑰金与小米的粉色版
longtaoger
博客等级 码龄13年 7粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值