android phonegap插件开发方法 plugin

参考http://blog.csdn.net/aaawqqq/article/details/20401111

配置 asset/www/cordova _plugins.js 文件

cordova _plugins的结构

module.exports= [{}];

module.exports.metadata = { }

在module.exports 的花括号里面配置

[javascript] view plaincopy
  1. {  
  2.         "file""plugins/intent.js",  
  3.         "id""org.apache.cordova.intent",  
  4.         "merges": [  
  5.             "navigator.intent"  
  6.         ]  
  7.     },  

 

file 代表  javascript写的接口位置

id   代表  唯一

merges   代表你在 javascript中调用该接口的语句    (类似activity中的 getApplication() 等等 ;就是个调用语句)

 

在module.exports.metadata 中配置id  

标号随意  



添加asset/plugins

  

intent.js的路径要和上步中配置的file路径一致

 

贴上intent.js的接口代码

[javascript] view plaincopy
  1. cordova.define("org.apache.cordova.intent"function(require, exports, module) {   
  2.   
  3. var exec = require(‘cordova/exec‘);  
  4.   
  5.   
  6.   
  7. module.exports = {  
  8.   
  9.     /** 
  10.      * 一共5个参数 
  11.        第一个 :成功回调 
  12.        第二个 :失败回调 
  13.        第三个 :将要调用的类的配置名字(在config.xml中配置 稍后在下面会讲解) 
  14.        第四个 :调用的方法名(一个类里可能有多个方法 靠这个参数区分) 
  15.        第五个 :传递的参数  以json的格式 
  16.      */  
  17.     demo: function(mills) {  
  18.         exec(function(winParam){  
  19.             alert(winParam);  
  20.         }, null"Demo""demo", [mills]);  
  21.     },  
  22. };  
  23.   
  24. });  
修改res/xml/config.xml文件


<feature name="Demo">
		<param name="android-package" value="org.apache.cordova.demo.Demo" />
	</feature>

name 为上步中的第三个参数
value为src中类的全路径

java处理类
package org.apache.cordova.demo;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
import android.content.Context;
import android.os.Vibrator;

public class Demo extends CordovaPlugin {
	public Demo() {
	}

	/**
 * @param action js中传递的第四个参数
 * @param args js中传递的第五个参数
 * @param callbackContext 
 */
	public boolean execute(String action, JSONArray args,
			CallbackContext callbackContext) throws JSONException {
		if (action.equals("demo")) {
			cordova.getThreadPool().execute(new Runnable() {
				@Override
				public void run() {
					Vibrator vibrator = (Vibrator) Demo.this.cordova
							.getActivity().getSystemService(
									Context.VIBRATOR_SERVICE);
					vibrator.vibrate(500);
				}
			});
		}
		// 执行js传过来的success方法
		callbackContext.success();
		return true;
	}
}

调用

function intent() {          navigator.intent.demo(1);          }  


navigator.intent 为第一步中配置的merges
<span style="font-family: Arial, Helvetica, sans-serif;">demo为asset/plugins/intent.js中定义的demo:function()的demo</span>











郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。