最近学习了cordova插件,记录一下大概的过程,仅供参考。

前期的配置就不记录了网上好多。

在简书上从新写了一个更详细的cordova插件教程,有需要的可以点这里进去看看。
第一步 创建一个cordova项目 输入命令 :cordova create 项目名 包名 例子:cordova create demo com.zc.demo 项目的大概目录 第二步 添加项目支持的平台(我只会android) 先进入工程目录 输入命令: cordova platform add 平台名 例子: cordova platform add android 创建成功够就可以进入platforms目录下面有个android,这个就可以导入到android studio了 第三步 自定义插件的创建 1、安装plugman 输入命令: npm install -g plugman 2、创建插件 输入命令: plugman create --name 插件名 --plugin_id 插件ID --plugin_version 插件版本号 例子: plugman create --name toast --plugin_id com.zc.demo.toast --plugin_version 1.0.0 注:每个前面是两个- 生成后的目录结构,没有package.json,后面会有如何加 3、完善目录 创建完成后src下面全是空的需要自己创建目录 4、在android创建java文件 可以先在android studio中写好后复制进去 import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.widget.Toast; import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException; /**
* Created by Administrator on 2017-10-11.
*/ public class UninstallPlugin extends CordovaPlugin { @Override
protected void pluginInitialize() {
super.pluginInitialize();
} @Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
final Activity activity = this.cordova.getActivity();
if (action.equals("showInfo")){ }else if (action.equals("uninstallApp")){
//这里要输入app包名
uninstallMyself("com.lby.test.android",activity);
return true;
}
return false;
} /**
* 弹出手机系统本身的卸载对话框,让用户卸载
* @param packageName
* @param activity
*/
public void uninstallMyself(String packageName,Activity activity){
if (checkApplication(packageName,activity)){
Uri packageURI = Uri.parse("package:"+packageName);
//调用手机系统本身的卸载activity
Intent intent = new Intent(Intent.ACTION_DELETE);
intent.setData(packageURI);
activity.startActivity(intent);
}
} /**
* 匹配你的APP包名是否能找到,然后卸载
* @param packageName
* @param activity
* @return
*/
public boolean checkApplication(String packageName,Activity activity){
if (packageName == null||"".equals(packageName)){
return false;
}
try {
activity.getPackageManager().getApplicationInfo(packageName,PackageManager.MATCH_UNINSTALLED_PACKAGES);
return true;
}catch (PackageManager.NameNotFoundException e){
return false;
}
} //弹出对话框
void show(String info){
Activity activity = this.cordova.getActivity();
Toast toast = Toast.makeText(activity,info,Toast.LENGTH_SHORT);
toast.show();
}
} 要继承CordovaPlugin,还要实现execute方法,action是用来判断需要进行什么操作是从js文件传过来的 5、完善plugin.xml内容 <?xml version='1.0' encoding='utf-8'?>
<plugin id="com.lby.plugin" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
<!--插件的名称-->
<name>uninstallPlugin</name>
<!--描述信息-->
<description>卸载插件</description>
<js-module name="uninstallPlugin" src="www/uninstallPlugin.js">
<clobbers target="cordova.plugins.uninstallPlugin" />
</js-module> <!--platform:支持的平台-->
<platform name="android">
<!--插件的配置信息,build的时候会添加到res/xml/config.xml 文件中-->
<config-file parent="/*" target="res/xml/config.xml">
<feature name="UninstallPlugin">
<param name="android-package" value="com.your.plugin.UninstallPlugin"/>
</feature>
</config-file>
<!-- 可以定义自己的一些权限信息,build后会添加到主配置文件中 -->
<config-file target="AndroidManifest.xml" parent="/*">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
</config-file>
<source-file src="src/android/UninstallPlugin.java" target-dir="src/com/your/plugin"/>
</platform>
</plugin> 自己根据情况改。 6、完善www目录下的js文件 var exec = require('cordova/exec'); var uninstallPlugin ={
showInfo:function(info,success,error){
exec(success, error, "UninstallPlugin", "showInfo", [info]);
},
uninstallApp:function(success,error){
exec(success, error, "UninstallPlugin", "uninstallApp", []);
}
} module.exports = uninstallPlugin; 大概这样 7、生成package.json文件 上面的就大概完成了插件的创建,要安装插件需要有package.json文件 首先从命令行进入插件目录 输入命令 :npm init 按照前面括号的写就行了 生成之后进行最后一步,把插件配置到android项目中
第四步 把插件配置到项目中 先在命令行进入android目录下 输入命令:cordova plugin add 插件的目录地址 例子: cordova plugin add E:\AS\uninstallPlugin 完成后就可以用了。
第五步 使用 在android studio中找到assets下的cordova_plugin.js里面是你所有插件的信息,clobbers的内容就是你在外面js里调用时用的名字 注:cordova的html不支持内联 在android studio生成的文件都在哪上面标注出来了。

cordova自定义插件的创建过程的更多相关文章

  1. Cordova与现有框架的结合,Cordova插件使用教程,Cordova自定义插件,框架集成Cordova,将Cordova集成到现有框架中

    一.框架集成cordova 将cordova集成到现有框架中 一般cordova工程是通过CMD命令来创建一个工程并添加Android.ios等平台,这样的创建方式可以完整的下载开发过程中所需要的的插 ...

  2. ionic2/cordova自定义插件集成aar包

    一.准备自定义插件 1. 准备:安装plugman npm install -g plugman 2. 新建组件 plugman create --name MyPlugin --plugin_id ...

  3. Cordova自定义插件

    项目原因需要自定义Cordova插件,下面把实现过程记录以便将来查阅.工程为Eclipse下的Android工程,该工程已经引入Cordova.Cordova版本4.0.2.1.定义插件类OpenAp ...

  4. Cordova - 与iOS原生代码交互2(使用Swift开发Cordova的自定义插件)

    在前一篇文章中我介绍了如何通过 js 与原生代码进行交互(Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)),当时是直接对Cordova生成的iOS工程项目进行编辑操作的(添加 ...

  5. Cordova应用的JavaScript代码和自定义插件代码的调试

    我之前写过三篇Cordova相关的技术文章.当我们使用Cordova将自己开发的前端应用打包安装到手机上后,可能会遇到需要调试Cordova应用的时候. 本文就介绍Cordova应用的调试步骤. 如果 ...

  6. cordova开发插件,并在android studio中开发、调试

    之前用过cordova Lib包装H5页面,自己写插件,但做法是野路子,不符合cordova插件的开发思路,这次项目又需要包装H5页面,同时需要自定义插件.所以又折腾了一次cordova自定义插件. ...

  7. ionic3使用cordova创建自定义插件

    1 安装 plugman 插件 npm --registry https://registry.npm.taobao.org install -g plugman 2 新建组件 新建一个插件文件夹,进 ...

  8. cordova /phonegap 自定义插件

    ### cordova /phonegap 自定义插件 在使用cordova 的过程中,虽然官方提供的插件以及其他人开源的插件较多.但有时为了实现某种需求,还是需要自己编写插件. 以前总是会手动的配置 ...

  9. cordova3.X 运用grunt生成plugin自定义插件骨架

    Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头.麦克风等.Cordova还提供了一组统一的JavaScript类库,以及为这些 ...

随机推荐

  1. 10个Python基础练习项目,你可能不会想到练手教程还这么有趣

    美国20世纪最重要的实用主义哲学家约翰·杜威提出一个学习方法,叫做:Learning By Doing,在实践中精进.胡适.陶行知.张伯苓.蒋梦麟等都曾是他的学生,杜威的哲学也影响了蔡元培.晏阳初等人 ...

  2. js写一个chrome 插件

    访问网站的时候,最烦的就是一些弹窗和广告.于是,就想着能不能在访问特定网站的时候,执行一段js脚本,去除页面的广告.于是乎,好像 chrome 插件可以实现. 这里,以 百度 的网站为例 新建 sim ...

  3. 做一个有产品思维的研发:部署(Tomcat配置,Nginx配置,JDK配置)

    每天10分钟,解决一个研发问题. 如果你想了解我在做什么,请看<做一个有产品思维的研发:课程大纲>传送门:https://www.cnblogs.com/hunttown/p/104909 ...

  4. FB面经prepare: Count the number of Vector

    给一个超级大的排好序的vector [abbcccdddeeee]比如,要求返回[{,a}, {,b}, {,c}, {,d}, {,e}......]复杂度要优于O(N) 分析: 如果是binary ...

  5. asyncio之Coroutines,Tasks and Future

    asyncio之Coroutines,Tasks and Future Coroutines and Tasks属于High-level APIs,也就是高级层的api. 本节概述用于协程和任务的高级 ...

  6. java多线程探究

    本文主要是一些线程理论性的知识,随后将贴出研究的源码,包含线程池,锁,线程组等简单的demo,欢迎大家下载1.进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程 ...

  7. 前端JS插件整理

    1.JQuery.js JavaScript 库,简化JS. 官网地址:https://jquery.com/ 菜鸟教程:http://www.runoob.com/jquery/jquery-tut ...

  8. map-有序 multimap-可重复 unordered_map-无序

    #include <iostream> #include <vector> #include <map> #include <unordered_map> ...

  9. World is Exploding (容斥 + 统计)

    题意:满足题目中的式子,a < b && c < d && Va < Vb && Vc > Vd 思路:先求不讨论位置重合的情况 ...

  10. 大数据处理框架之Strom:DRPC

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 storm-0.9 一.DRPC DRPC:Distri ...