cordova自定义插件的创建过程

最近学习了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生成的文件都在哪上面标注出来了。

 

原文地址:https://www.cnblogs.com/Free-Thinker/p/10768273.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


公司前端界面用的是vue,我要嵌入到Android中生成App第一步:安装nodenode安装:直接进入官网https:/odejs.org/zh-cn/,下载最新版本安装。安装之后在命令行中使用”node-v”检查安装是否成功。npm安装:由于新版的nodejs已经集成了npm,所以node安装时npm也一并安装好了。同样可以通过输
Q:我用cordova开发项目,想在app内跳转外部链接,安装了cordova-plugin-inappbrowser后确实可以跳转,但是跳转的页面有个按钮,原本点击会下载app,现在点击后毫无反应,求大神解惑。A:已经找到解决办法了,把cordova.InAppBrowser.open的打开网页方式改为“_system”即可,即用手机默认浏览器打
我正在使用https://github.com/arnesson/cordova-plugin-firebase/在基于离子的应用上接收GoogleFirebase消息.设置证书后,安装插件并设置Firebase帐户我能够通过Firebase控制台接收通知(在Android和ios设备上).但是,当我通过FirebaseAPI(https://firebase.google.com/docs/clo
一、Cordova的基础点在混合式应用中,我们通过现有的Cordova插件,可以轻松的在H5上调用手机native的功能。现有的Cordova插件能满足平时大部分的开发需求,然而,有时候找不到合适的插件、或对找到的插件有不满意的地方,那就要动手去做或改写一个插件,这时候就要了解一些Cordova插件的
cordova自定义插件注意:存放自定义cordova插件目录不能有空格可能会报错cordova的安装下载node.js,安装完成后你可以在命令行中使用node和npm.安装cordova使用node.js的npm工具。打开控制台输入npminstall-gcordova-g是全局安装cordova。安装完成后就可以在命令行
一、问题VueAPP中有一个文件下载功能,用了各种方法来实现下载功能,app都没有反应。JS实现html页面点击下载文件这个博客里面几乎包含了我试过的大部分方法,发现PC端没问题,手机不可以。二、经过这些方法PC端没问题,安卓就不行,问了一个接触过安卓的后台小伙伴,说是
helloindex.html1<!DOCTYPEhtml>2<html>3<head>4<metacharset="utf-8">5<title>我的App<itle>6<metaname="format-detection"content="telephone=no&q
1.plugman安装npminstall-gplugman如果提示permissiondenied需要加sudosudonpminstall-gplugman2.创建插件sudoplugmancreate--name插件名--plugin_id插件id--plugin_version0.0.13创建package.json文件cd上面床架的插件文件夹下,plugmancreate
最近学习了cordova插件,记录一下大概的过程,仅供参考。前期的配置就不记录了网上好多。在简书上从新写了一个更详细的cordova插件教程,有需要的可以点这里进去看看。第一步创建一个cordova项目输入命令:cordovacreate项目名包名例子:cordovacreatedemocom.zc.demo项目的大概目
我知道这个链接:https://cordova.apache.org/docs/en/latesteference/cordova-plugin-file/#where-to-store-files但我想将文件保存在Downloads目录中.这可以使用Ionic在任何路径中保存文件吗?如果是这样,请分享这个例子.这是代码:downloadImage(image){this.platform.ready(
我想在我的HTML5PhonegapJavaScript应用程序中添加状态栏通知.可能吗?解决方法:Ourteam已发布用于phonegapAndroid状态栏通知的插件.https://github.com/phonegap/phonegap-plugins/commits/master/Android/StatusBarNotification
使用cordova-plugin-geoloaction插件我正在检索用户在其移动设备上的位置.我的onSuccess()函数返回纬度和经度,现在我想在应用程序中显示相应的地址:<scripttype="text/javascript"charset="utf-8">//WaitfordeviceAPIlibrariestoload//document.addEventListe
我正在检查Android的PhoneGapAPI,并正在尝试相机示例应用程序示例并安装在我的Android手机(2.1GalaxyS)中.然而,在运行应用程序并拍照后,未检索到图像.根据我在代码中的理解,拍摄照片后,图像将显示在按钮下方60×60.我尝试在警报消息中打印出base64值,但我也没有得到任何响应(也
我刚刚在Eclipse中创建了一个包含所有phonegap和cordova文件的Android项目.但是,我没有这样的目录,因此没有config.xml.根据ApacheCordova文档,它应该位于:app/res/xml/config.xml.对于/res目录,我的文件夹结构如下:es/drawable-hdpies/drawable-ldpies/drawable-
我正试图在phonegap中设置一个新的开发环境.以下是我的路径变量设置在Windows中的外观:C:\Users\Mrinal\AppData\Roaming\npm;C:\android\development\sdk\platform-tools;C:\android\development\sdk\tools;C:\ProgramFiles\Java\jdk1.7.0_17\bin;C:\ant\bin现在在第三行
我正在将Worklight用于Android应用程序,当我尝试添加启动画面时publicclassMyAppextendsWLDroidGap{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);super.setIntegerProperty("splashscreen",
我正在创建一个可在所有3个移动平台(Android,iOSa和WindowsMobile8)上运行的HTML5移动应用程序.我正在使用javascript进行本地化(https://github.com/eligrey/l10n.js/#readme).该应用程序在浏览器上正常工作.但是当我在移动模拟器上部署它时,本地化不起作用.我认为问题是java
我有通过cordova成功构建的代码.但是,当我尝试模拟它时,我收到此错误“错误:cmd:命令失败,退出代码为1”.关于如何解决这个问题的任何想法?Hereismyoutputfromattemptingtoemulatethecode解决方法:我有同样的问题.看起来你没有任何AVD在运行.我不认为ionic的教程指定你需要这
我尝试添加各种标签并尝试添加相对路径:’//’这些是我尝试过的各种元标记<metahttp-equiv="Content-Security-Policy"content="default-src'self'"><metahttp-equiv="Content-Security-Policy"content="style-src'self''u
我正在Cordova/PhoneGap中编写一个应用程序,它试图使用Dropbox.js从Dropbox获取文件.Cordova版本为3.0.1,Dropbox.js版本为0.10.0.我的Javascript在桌面浏览器上工作得很好:varclient=newDropbox.Client({key:"<mykey>",secret:"<mysecret>"});client.authenticate