cordova 插件 修改版

news/2024/7/24 12:40:24 标签: cordova, 自定义插件

1.创建项目

cordova create LocalCordova com.hjk.cordova CordovaApp

2.创建插件

plugman create --name HjkPlugin --plugin_id HjkPlugin --plugin_version 1.0.0

3.HjkPlugin目录结构

src--android ---HjkPlugin.java   java代码

www-HjkPlugin.js  js调用配置

plugin.xml    配置页面

package.json    通过npm init 获取

HjkPlugin.java

package org.apache.cordova.bluetooth;

import android.widget.Toast;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaArgs;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;

public class HjkPlugin extends CordovaPlugin {

    @Override
    public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException {
		//localTost 为对外调用的方法名
        if("localToast".equals(action)){
            Toast.makeText(cordova.getActivity(),"cordova plugin test :" + args.getString(0),Toast.LENGTH_LONG).show();
			//callbackContext用来调用回调函数,success为调用成功的回调
            callbackContext.success("toast success");
			return true;
        }
		//error为返回错误时的回调
        callbackContext.error("toast error");
        return false;
    }
}

HjkPlugin.js

var exec = require('cordova/exec');
// arg1:成功回调
// arg2:失败回调
// arg3:对应xml配置文件中的feature name
// arg4:plugin 插件中比对的action
// arg5:参数,json格式
// 属性中的localToast => 外部调用的对象
// exec中的localToast => plugin 插件中比对的action

var hjkFunc = {
    
	localToast : function (success, error,arg0) {
		exec(success, error, "HjkToast", "localToast", [arg0]);
	}
}

module.exports = hjkFunc;

plugin.xml

<?xml version='1.0' encoding='utf-8'?>
<plugin id="HjkPlugin" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
    <!--指js文件名,而这个文件会自动以`<script`>标签的形式添加到Cordova项目的起始页。
    通过在*js-module*中列出插件,可以减少开发者的工作。*clobbers*元素说明了
    *module.exports*自动添加到*window*对象,让插件方法能够在窗口级别使用。-->
	<name>HjkPlugin</name>
	
	<!--文件中js-module元素定义了js的名字,它将在应用开始时自动加载。
    它定义了向Cordova公开的js接口。clobbers元素指明了js对象赋值给加载的js对象。
    本例中,HjkPlugin插件通过一个cordova.plugins.HjkPlugin对象向Cordova应用公开。-->
    <js-module name="HjkPlugin" src="www/HjkPlugin.js">
        <clobbers target="cordova.plugins.HjkPlugin" />
    </js-module>
	
	<!--它定义了某个移动平台专用的设置,包括了相关native代码的设置。可以有一个或多个平台。-->
    <!--android的配置-->
    <platform name="android">

        <!--config-file元素定义了在插件安装过程中的改动。在例子中,一个叫HjkToast
        的特性添加到Android项目的config.xml文件中,指向Java类org.apache.cordova.bluetooth.HjkPlugin-->
        <config-file parent="/*" target="res/xml/config.xml">
            <feature name="HjkToast">
                <param name="android-package" value="org.apache.cordova.bluetooth.HjkPlugin" />
            </feature>
        </config-file>

        <!--android权限,本例没有用到下权限,仅示例-->
        <config-file parent="/*" target="AndroidManifest.xml">
            <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        </config-file>

        <!--source-file元素指出了一个或多个Android native源代码文件,当插件安装时由CLI安装。
        下面的例子指示plugman或CLI复制HjkPlugin.java文件到Cordova项目
         Android平台文件夹的*src/org/apache/cordova/bluetooth/HjkPlugin文件夹中。jar包放到libs下-->
        <source-file src="src/android/HjkPlugin.java" target-dir="src/org/apache/cordova/bluetooth" />
        <source-file src="src/android/xxx.jar" target-dir="libs" />

    </platform>
	
	
	
	
</plugin>

package.json

{
  "name": "hjkplugin",
  "version": "1.0.0",
  "description": "test for plugin",
  "cordova": {
    "id": "HjkPlugin",
    "platforms": [
      "android"
    ]
  },
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "hjk",
  "license": "ISC"
}

4.项目添加插件

cordova plugin add E:\cordova_workspace\HjkPlugin

5.调用插件

onDeviceReady: function() {
        this.receivedEvent('deviceready');
		cordova.plugins.HjkPlugin.localToast(function (res) {
			alert(res)
		}, function (msg) {
			alert(msg)
		},"just hjk toast")
    },

6.运行

cordova run  android


http://www.niftyadmin.cn/n/1162587.html

相关文章

vue moke 数据的使用

开发过程中&#xff0c;一般前台的代码调试是需要后台的接口与数据支持的&#xff0c;在数据流的支持下&#xff0c;才能有效的完成对整个代码的调测。moke数据的产生就是让前端脱离后台&#xff0c;完成代码的调测。 在vue项目中&#xff0c;与static目录同级创建moke目录&am…

cordova跳转原生Android页面

1.创建cordova项目&#xff0c;添加平台android cordova create LocalCordova com.hjk.cordova CordovaApp 2.使用plugman创建自定义插件 plugman create --name HjkPlugin --plugin_id HjkPlugin --plugin_version 1.0.0 调用java代码如下&#xff1a; package org.apach…

Cordova环境下的依赖项目唯一性

cordova运行环境在编译其他平台项目时(如&#xff1a;android&#xff0c;ios等)&#xff0c;会确定依赖项目的唯一性。举例说明&#xff1a;cordova run android 或者 cordova run ios 会在cordova运行环境下&#xff0c;开始编译平台项目。好处是&#xff0c;如果存在多平台…

给iframe添加点击事件

方案一&#xff1a;无本地源码iframe 存在跨域问题&#xff0c;所以需要用到document.activeElement 1.0处理方法&#xff1a; export const IframeOnClick {resolution: 200,iframes: [],interval: null,Iframe: function () {this.element arguments[0]this.cb argumen…

vue-cropper 截图插件的使用

安装插件&#xff1a; npm install vue-cropper --save-dev 引用&#xff1a; import vueCropper from vue-cropper 声明&#xff1a; components: {vueCropper } <vueCropperref"cropper":img"option.img" // 裁剪图片的地址 可选值&#xff1a;u…

Maven的安装配置与第一个hello-world

1.安装配置 Maven的安装与配置maven定义&#xff1a;Maven实一个给予java平台的自动化构建工具make > ant > maven >gradle(gradle学习成本较高&#xff0c;普及不如maven)Maven是一个跨平台的项目管理工具。主要用户java平台项目的构建与依赖管理。maven作用&#x…

cordova调用第三方应用

cordova 帮助webapp 达到调用原生系统的功能 项目需求&#xff1a;在项目中调用系统中含有的第三方地图应用 需求其实分为两步&#xff1a; 1. 查找本地地图应用 2.成功调起本地应用 首先需要安装两个插件&#xff0c;安装指令如下&#xff1a; 1. cordova plugin add cordo…

存储、读取、清除cookies数据

// 存cookiessetCookies (key, value, execTime) {var exdate new Date()// cookies保存天数exdate.setTime(exdate.getTime() 24*60*60*1000*execTime)// 拼接window.document.cookie key "" value ";path/;expires"exdate.toGMTString();},// 读co…