高级文件系统实现者指南,第 12 部分
2007-09-14 14:16
447 查看
前言
现在phonegap虽然提供了很多中插件API,但难免会不够全,不够满足我们的需求!这时候我们就可以通过自己编写插件来完善这些功能。
phonegap的插件主要分两部分:一部分是前台页面js调用插件的接口,还有一部分就是后台做的处理。
下面我以我写的一个删除文件功能为例,先来看前台js代码:
接下来我们来看一下后台的代码:
action 插件方法
args 传递过来的参数,获取方法为
callbackContext 回调函数
回调成功的函数callbackContext.success(message)
回调失败的函数callbackContext.error(message)
除了前台js接口和后台方法,还有一个非常重要的就是串联前后台的东西:
在res/xml/config.xml中加入如下代码:
"org.apache.cordova.MyEcho"为插件在后台的类文件
这样phonegap插件还做不到的就可以通过自己编写java代码来实现了!
本文出自 “雪飘七月” 博客,请务必保留此出处http://xuepiaoqiyue.blog.51cto.com/4391594/1218430
现在phonegap虽然提供了很多中插件API,但难免会不够全,不够满足我们的需求!这时候我们就可以通过自己编写插件来完善这些功能。
phonegap的插件主要分两部分:一部分是前台页面js调用插件的接口,还有一部分就是后台做的处理。
下面我以我写的一个删除文件功能为例,先来看前台js代码:
removefile : function(path,cb){ //定义插件删除方法 window.deletebook = function(path, callback) { //自定义插件的核心 cordova.exec(callback, function(err) { callback('Nothing to echo.'); }, "MyEcho", "deletebook", [path]); }; //调用插件删除方法 document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { window.deletebook(path, function(echoValue) { //console.log(echoValue + " success"); if(echoValue == "true"){ cb(); } }); } }插件的核心在于cordova.exec(successCB,failedCB,pluginName,action,data);这个函数中五个参数分别为:successCB 调用成功后的回调函数failedCB 调用失败后的回调函数pluginName 插件名action 插件方法data 调用插件向后台传递的参数,格式为数组
接下来我们来看一下后台的代码:
package org.apache.cordova; import org.apache.cordova.api.CallbackContext; import org.apache.cordova.api.CordovaPlugin; import org.join.messenger.MessageCode; import org.json.JSONArray; import org.json.JSONException; import android.os.Bundle; import com.lemote.ebook.Ebook; public class MyEcho extends CordovaPlugin { @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { System.out.println("================action:"+action); if(action.equals("deletebook")){ System.out.println("deletebook!"); String filepath = args.getString(0); String returninfo = "false"; String whole_filepath = "/mnt/sdcard/"+filepath; System.out.println("whole_filepath:"+whole_filepath); if(MyFileUtil.removeFile(whole_filepath)){ System.out.println("删除成功!"); returninfo = "true"; } this.echo(returninfo, callbackContext); return true; } return false; } //调用回调函数,返回成功 private void echo(String message, CallbackContext callbackContext) { if (message != null && message.length() > 0) { callbackContext.success(message); } else { callbackContext.error("Expected one non-empty string argument."); } } }execute(String action, JSONArray args, CallbackContext callbackContext)中三个参数分别为:
action 插件方法
args 传递过来的参数,获取方法为
args.getString(数组中的位置
);
callbackContext 回调函数
回调成功的函数callbackContext.success(message)
回调失败的函数callbackContext.error(message)
除了前台js接口和后台方法,还有一个非常重要的就是串联前后台的东西:
在res/xml/config.xml中加入如下代码:
<plugin name="MyEcho" value="org.apache.cordova.MyEcho" />"MyEcho"为前台js调用的pluginName
"org.apache.cordova.MyEcho"为插件在后台的类文件
这样phonegap插件还做不到的就可以通过自己编写java代码来实现了!
本文出自 “雪飘七月” 博客,请务必保留此出处http://xuepiaoqiyue.blog.51cto.com/4391594/1218430
相关文章推荐
- 高级文件系统实现者指南,第 8 部分
- 高级文件系统实现者指南,第 2 部分
- 高级文件系统实现者指南,第 9 部分
- 高级文件系统实现者指南:第 10 部分
- 高级文件系统实现者指南,第 11 部分
- 高级文件系统实现者指南,第 3 部分
- 高级文件系统实现者指南,第 4 部分
- 高级文件系统实现者指南,第 13 部分
- 高级文件系统实现者指南,第 5 部分
- 高级文件系统实现者指南,第 6 部分
- 高级文件系统实现者指南,第 7 部分
- 高级文件系统实现者指南 devfs 设备
- 高级文件系统实现者指南 (linux gentoo)
- 高级文件系统实现者指南
- [收藏]高级文件系统实现者指南
- Linux 学习笔记 -- 第四部分 Linux 使用着管理 -- 第15章 磁盘配额 (Quota) 与高级文件系统管理
- 【基础部分】之访问网络共享文件系统
- Autojump:一个可以在 Linux 文件系统快速导航的高级 cd 命令
- 高级 Linux 命令精通指南,第 2 部分
- ESX VMFS文件系统浏览及修复软件部分免费发布