您的位置:首页 > 其它

cordova(phonegap)4.2自定义插件

2015-03-05 20:09 274 查看
PhoneGap学习路上到处是坑,资料更新速度赶不上版本更新速度,而且版本更新后的东西变化很大,老版本的资料就不管用。补充:该方法同时适用于eclipse和android studio 1.1这是网上大多数资料自定义插件的步骤,在3.5版本以前是按照这个走的,在4.0以后由于工程的目录结构发生了较大变化,参考多个版本的自定义插件后找到个个人认为较好的方法,改变3、4、5步骤。1 使用命令行 建立phonegap工程2 将工程导入 eclipse3 在assents 目录下的  cordova-plugins.js文件添加配置4 在plugin目录下编写javascript接口5 在res/xml 目录下配置  config.xml 文件6 在src目录下编写java文件最后在javascript文件中调用接口(补充:在3.x以后貌似就不能直接在eclipse写插件改配置的方式来自定义插件了,都得按照添加官方插件的形式添加本地插件,所以自定义本地插件直接在eclipse外面写好了添加进去就行)思路:    按照phonegap官方的插件的使用方法,是直接把插件add进工程后通过接口访问,不需要如3、4、5里面自己定义配置。    不采用上面的方法主要是phonegap目前的使用尿性实在不敢恭维,完全按照步骤走也会出错,得自己摸索。

1、这是4.2的目录结构

说明:www目录本身和之前的版本是一样的,是在assets目录下,只不过引出个快捷方式方便查看而已。        config.xml也是快捷方式,不过它引自工程的根目录下,也就是这里:

2、开始自定义插件,这里我是以toast为例子。

在硬盘中创建一个目录文件夹为org.apache.cordova.toast,目录名字参考了官方的方便使用。该目录就是插件的根目录。在这里创建以下目录内容先空着,后续来说里面的内容,先把骨架搭好。然后在src下新建android目录,在android目录下写自己的java文件。如图这个类继承CordovaPlugin并实现以下方法其中execute是必须重写的,里面就是js里使用插件时调用的方法,具体写法不累述。

3、在www目录下写js文件

这个js文件是调用java文件的过渡桥梁var cordova=require('cordova');var Toast =function(){Toast.prototype.toast=function(success,error,str){cordova.exec(sucess,error,'ToastPlugin','sampletoast',str)//'Toast'对应我们在java文件中定义的类名,//'sampletoast'是在这个类中调用的自定义方法,也就是action//str是我们客户端传递给这个方法的参数,是个数组}}var toast=new Toast();module.exports=toast;

4、在根目录下写plugin.xml

代码如下:说明:    1--插件的id和名字,在正确导入插件后命令行输入cordova Plugin list 后就会显示着这里定义的信息    2--js-module指向的就是我们刚才所写的js文件的路径,src指向www/toast.js,name属性自己定义,clobbers代表我们在客户端调用的时候的实例名,这个必须小写。    3--platform代表不同平台下的配置,src代表Java源文件的地址,target-dir代表你要拷贝到项目中的地址。name和value分别是在js里调用时的实例名和指向的那个JAVA类。注:很多以前版本的资料上说的自定义插件必须在config.xml里写上上这段,亦或者是按照上面我的方法卸载plugin.xml并添加到工程后会在config.xml里自动添加上这段话,这里经过测试,发现在4.0后不必在config.xml里写这个,可能是新版本直接把用命令行添加的插件的配置写到系统级里了吧。

5、插件写完了,下面是添加到工程。

然后在eclipse里面刷新就可以看到多了这么个目录

6、在index.html的js中调用

cordova.exec(success, error, "ToastPlugin", "sampletoast", option);这个方法就行了,1、2参数是操作成功失败后的回调方法,可以自己定义也可以不写,3参数是刚才在步骤4里定义的,这里必须要匹配才行,不然会提示class not found ,4参数是传递给java类的action动作,java文件里可以根据传入的这个值的不同调用不同个方法。5option是传入和action匹配的方法的参数。附:我的第一个自定义插件demohttp://download.csdn.net/detail/kong92917/8475297
org.apache.cordova.toast是插件
phonegapplugin4是包含了cordovaLib的工程
20160108更新:现在android自带的插件已经更新了很多,toast已经加入进去了。
另附几个靠谱的可做参考的文章:
官网:http://cordova.apache.org/docs/en/4.0.0/guide_platforms_android_plugin.md.html#Android%20Plugins
http://bbs.phonegap100.com/thread-1160-1-1.html
http://blog.163.com/da7_1@126/blog/static/104072678201292602950121/
转载请注明出处:http://blog.csdn.net/kong92917
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息