Cordova plugin
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010106153/article/details/53418528
Cordova plugin
工程目录
src: 各个平台的源码文件,包含 Android ios blackberry 等;
www: JavaScript调用native代码的接口文件;
plugin.xml: 插件的配置文件
编写Android代码
首先定义一个类继承自CordovaPlugin:
public class Updater extends CordovaPlugin {
public Updater(){
}
}
1
2
3
4
在该类中添加一个方法execute:
public class Updater extends CordovaPlugin {
public Updater(){
}
public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
if (action.equals("update")) {
new UpdaterTask(callbackContext).execute(args.getString(0));
}else{
return false;
}
return true;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
action:在JavaScript中调用时指定的action名称;
args:在JavaScript中调用时传入的参数;
callbackContext:向JavaScript返回结果的上下文对象,正确返回时callbackContext.success(data),错误返回时 callbackContext.error(err)
注意:cordova plugin中的上下文与Android native中的上下文有所区别,例如在cordova中启动一个Activity的写法是:cordova.getActivity().startActivity(Intent intent),且cordova plugin中的Activity需要继承自CordovaActivity.
编写plugin.xml文件
首先看一个例子:
<?xml version='1.0' encoding='utf-8'?>
<plugin id="expense-plugin-updater" version="0.0.1" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
<name>ExpenseUpdater</name>
<js-module name="ExpenseUpdater" src="www/expense-plugin-updater.js"><clobbers target="expenseupdater"/></js-module>
<platform name="android">
<config-file parent="/*" target="res/xml/config.xml">
<feature name="ExpenseUpdater"><param name="android-package" value="expense.plugin.updater.Updater"/></feature>
</config-file>
<config-file parent="/*" target="AndroidManifest.xml">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
</config-file>
<source-file src="src/android/Updater.java" target-dir="src/expense/plugin/updater"/>
<source-file src="src/android/UpdaterTask.java" target-dir="src/expense/plugin/updater"/>
<source-file src="src/android/DecompressFast.java" target-dir="src/expense/plugin/updater"/>
</platform>
</plugin>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
js-module: name:接口文件的名字 src:接口文件的路径 clobbers.target:在宿主工程中该plugin的对象名称;
feature:每一个调用入口都需要在这里注册,即:extends CordovaPlugin的类
source-file:源码文件的map关系
plugin.xml详细的教程见:https://cordova.apache.org/docs/en/latest/plugin_ref/spec.html
编写接口文件
例子:
var exec = require('cordova/exec');
exports.update = function(url, success, error) {
exec(success, error, "ExpenseUpdater", "update", [url]);
};
1
2
3
4
5
success: 正确回调
error:错误回调
ExpenseUpdater:需要调用的feature的名称
update:需要调用的action的名称
[url]:传入的参数数组
在Ionic2中如何使用
首先将该plugin安装到ionic工程中:
cordova plugin add [path-to-your-plugin]
1
编写一个调用的interface[updater.d.ts]
export declare class ExpenseUpdater {
update(url: string): Promise<any>;
}
1
2
3
实现interface[updater.js]
"use strict";
var ExpenseUpdater = (function(){
function ExpenseUpdater(){};
ExpenseUpdater.prototype.update=function(url){
return new Promise(function(resolve,reject){
expenseupdater.update(url,function(msg){
resolve(msg);
},function(err){
reject("fuck");
});
});
};
return ExpenseUpdater;
}());
exports.ExpenseUpdater = ExpenseUpdater;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
注意:其中expenseupdater对应pluign.xml文件中的js-module标签中的clobbers.target
---------------------
作者:LehmanHe
来源:CSDN
原文:https://blog.csdn.net/u010106153/article/details/53418528
版权声明:本文为博主原创文章,转载请附上博文链接!
Cordova plugin的更多相关文章
- [Cordova] Plugin里使用iOS Framework
[Cordova] Plugin里使用iOS Framework 前言 开发Cordova Plugin的时候,在Native Code里使用第三方Library,除了可以加速项目的时程.也避免了重复 ...
- [Cordova] Plugin开发架构
[Cordova] Plugin开发架构 问题情景 开发Cordova Plugin的时候,侦错Native Code是一件让人困扰的事情,因为Cordova所提供的错误讯息并没有那么的完整.常常需要 ...
- [Cordova] Plugin里使用Android Library
[Cordova] Plugin里使用Android Library 前言 开发Cordova Plugin的时候,在Native Code里使用第三方Library,除了可以加速项目的时程.也避免了 ...
- [Cordova] Plugin开发入门
[Cordova] Plugin开发入门 Overview Cordova的设计概念,是在APP上透过Web控件来呈现Web页面,让Web开发人员可以操作熟悉的语言.工具来开发APP.使用Web页面来 ...
- cordova plugin数据传递概要
cordova plugin数据传递概要: 1.调用pluginManager向所有插件发送消息: PluginManager.postMessage(String id, Object data); ...
- ionic cordova plugin simple demo
要用cordova plugin 的话还是需要设置一下的 1. 下载 ng-cordova.js download the zip file here 2. 在index.html 中引用 (cord ...
- 在meteor中如何使用ionic组件tabs,及如何添加使用cordova plugin inappbrower
更新框架: meteor update meteor框架的优点不言而喻,它大大减轻了App前后端开发的负担,今年5月又获得B轮2000万融资,代表了市场对它一个免费.开源开发框架的肯定.cordova ...
- cordova plugin汇总大全
1.获取当前应用的版本号 cordova plugin add cordova-plugin-app-version 2.获取网络连接信息 cordova plugin add cordova-plu ...
- vue+cordova构建跨平台应用集成并使用Cordova plugin
安装 //安装 vue-cil npm install --global vue-cli //安装cordova npm i cordova -g cordova 新建项目 //新建cordova 项 ...
随机推荐
- MySQL 查询出的时间相差几个小时
最近做的一个springboot2.0项目. 前提是我的服务器时区没有问题: [root@wangbo ~]# date -R Mon, 22 Apr 2019 19:24:33 +0800 可以参考 ...
- java中的int与byte的转化
java中的int与byte的转化 1.基础准备 1.1.原码 就是二进制码,最高位为符号位,0表示正数,1表示负数,剩余部分表示真值 1.2.反码 在原码的基础上,正数反码就是他本身,负数除符号位之 ...
- 【机器学习】--GBDT算法从初始到应用
一.前述 提升是一种机器学习技术,可以用于回归和分类的问题,它每一步产生弱预测模型(如决策树),并加权累加到总模型中:如果每一步的弱预测模型的生成都是依据损失函数的梯度方式的,那么就称为梯度提升(Gr ...
- golang中Context的使用场景
golang中Context的使用场景 context在Go1.7之后就进入标准库中了.它主要的用处如果用一句话来说,是在于控制goroutine的生命周期.当一个计算任务被goroutine承接了之 ...
- WebPack引用Bootstrap 无法使用图标的结局方案
npm i https://github.com/iconic/open-iconic.git -D 因为boostrap的css里删除了图标 分开了 我们在引入个呵呵. 下载:npm i boot ...
- Exceptionless邮箱设置
在web.config中配置邮箱: <system.net> <mailSettings> <smtp from="xxx@163.com"> ...
- Scrum Mastery:有效利用组织的5个步骤
组织以什么样的方式能最大限度的发挥Scrum的优势?组织在哪些方面阻碍了个人的发展?Scrum是一种能使业务变得敏捷的框架.而组织恰恰需要变得敏捷.只是,组织本身有时候并没有足够的能力来帮助Scrum ...
- 105 - kube-scheduler源码分析 - predicate算法注册
一.predicate注册过程 今天我们来聊聊predicate函数是怎么被注册进去的,也就是要执行的一堆predicate是怎么成为“选中的孩子”. 代码位置:pkg/scheduler/fact ...
- select标签 禁止选择但又能通过序列化form表单传值到后台
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁止选择但又能通过序列化form表单传值到后台,但是当我们使用disabled="disabled"时发现,无法序列化 ...
- Webpack系列-第三篇流程杂记
系列文章 Webpack系列-第一篇基础杂记 Webpack系列-第二篇插件机制杂记 Webpack系列-第三篇流程杂记 前言 本文章个人理解, 只是为了理清webpack流程, 没有关注内部过多细节 ...