cordova打印机插件_phonegap/cordova plugin

本文介绍了如何使用Cordova框架开发自定义插件,包括一个简单的webapp插件KittyPlugin和一个涉及Android与JS交互的插件myToast。通过展示目录结构、XML配置、JavaScript及Java代码,详细阐述了插件的创建过程,并给出了调用示例。
摘要由CSDN通过智能技术生成

蛋疼的是你不能用native去写app,那么只能用个中间件来完成,现在选择无疑是cordova,国内的多用appcan(去年用过,个人感觉除了有点乱之外其他的还ok),先来讲讲cordova插件,因为很多时候官方提供的plugin已经在我们自身应用中满足不了,那么只能依靠自己去完成,如下最简单的webapp plugin。

plugin(myKitty)

|__www

|   |__myKitty.js

|

|__plugin.xml

以上是结构

我们来看下怎么去完成这个plugin

plugin.xml

id="com.korewang.cordova.myKitty"

version="1.0.0">

KittyPlugin

KittyPlugin Description

korewang

Apache 2.0 License

=3.0.0" />

myKitty.js

var myKitty = function() {};

myKitty.prototype.name = function() {

alert("Kitty && Kitty");

};

var mykitty = new myKitty();

module.exports = mykitty;

plugin已经写完,接下来是在我们的app里加入plugin,直接上图最明了

f933aedde81d608d18d0900a8636a626.png

此时 KittyPlugin已经添加到你的app里可以调用

onDeviceReady之后调用

myKitty.name();

0d08f2881f90b6294a23af0873b25d1a.png

调用成功;这个是不用调native的方法如js的公共类自己的小方法可以放入plugin

下面我们说下native Android和js的plugin

先看目录结构

plugin(myToast)

|__src

|   |__android

|   |    |__myToast.java

|   |__ios

|   |   |__myToast.m

|   |...

|__www

|   |__myToast.js

|__plugin.xml

目录完善之后我们就填东西

plugin.xml

id="com.korewang.cordova.Toast"

version="1.0.0">

ToastPlugin

com.korewang.cordova.Toast Description

korewang

Apache 2.0 License

=3.0.0" />

myToast.js

var exec = require('cordova/exec');

var myToast = function(){};

myToast.prototype.show=function(content,type){

exec(null, null, "webToast", "show", [content,type]);

};

myToast.prototype.openVideo=function(content){

exec(null, null, "webToast", "openVideo", [content]);

};

var showt = new myToast();

module.exports = showt;

myToast.java

package com.korewang.cordova.Toast;

import org.apache.cordova.CallbackContext;

import org.apache.cordova.CordovaInterface;

import org.apache.cordova.CordovaPlugin;

import org.apache.cordova.CordovaWebView;

import org.json.JSONArray;

import org.json.JSONException;

import android.content.Context;

import android.telephony.TelephonyManager;

import android.util.Log;

public class myToast extends CordovaPlugin {

private static final String TAG = "Toast";

@Override

public void initialize(CordovaInterface cordova, CordovaWebView webView) {

super.initialize(cordova, webView);

Log.v(TAG, "Toast: initialization");

Context context = this.cordova.getActivity().getApplicationContext();

}

@Override

public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {

if("show".equals(action)){

showToast(args.getString(0), args.getInt(1));

}else if("openVideo".equals(action)) {

openVideo(args.getString(0));

}

callbackContext.success();

return true;

}//

private void showToast(String text,int type){

CordovaInterface cordova = this.cordova;

if(type==1){

Log.e("e11111111111111111", "Crop operation not supported on this device");

android.widget.Toast.makeText(cordova.getActivity(), text, 1).show();

}else{

android.widget.Toast.makeText(cordova.getActivity(), text, 0).show();

}

}

private void openVideo(String text){

String url = text;

String extension = MimeTypeMap.getFileExtensionFromUrl(url);

String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);

Intent mediaIntent = new Intent(Intent.ACTION_VIEW);

mediaIntent.setDataAndType(Uri.parse(url), mimeType);

//startActivity(mediaIntent);

cordova.startActivityForResult((CordovaPlugin) this, mediaIntent, 200);

}

}

插件完成后cordova plugin add E:\xx\xx

0745afb8d4d806a789f99557022300e4.png

93f1abe10220036084a18f80a71d39e1.png

*******Important*****

Don't forget your platforms add native file of plugin;

******

此时查看成功之后可看到以下结果 platforms下平台时候包含了插件如果没有自己重新创建

05892671ded137e5bdb275e54236c635.png

js 调用 -> navigator.toast.show("我是Toast,你好Kitty1");

navigator.toast.openVideo("url");

run之后可在模拟器看到以下结果::

a7818f2b5918a70a115e515a965a2002.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值