很多时候官网的插件不足给我们使用、比如说:现在公司要正在做Phonegap的项目,要用到自主研发的一些技术,
那么这个技术是你们公司研发的,网上就根本不可能有这种插件了、那么就要开始学习cordova来自定义一个插件.
下面开始一个简单的例子
这个代码是我们公司的一个语音拨号、语音通知的插件,但是出于懒惰的原因,我就在这个上面加一个测试的tt,实现弹出一个吐司
/**
* Author:View on 2015/12/30 10:21
* Class Synopsis:
*/
public class VoicePlugin extends CordovaPlugin {
private static final String VICEO_ACTION="viceo";
private static final String DIAL_ACTION="dial";
private static final String text="tt";
private static final String TAG=VoicePlugin.class.getSimpleName();
public VoicePlugin() {
}
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
Log.e("ViewLog","get action is: "+action.toString());
Log.e("ViewLog","get args is: "+args.toString());
if(action.equals(VICEO_ACTION)){
//语音通知
ViceoAction();
Log.e("ViewLog ViceoAction","get args is: "+args.toString());
}else if(action.equals(DIAL_ACTION)){
//点击拨号
DialAction();
Log.e("ViewLog DialAction","get args is: "+args.toString());
}else if(action.equals(text)){
Toast.makeText(cordova.getActivity(),"Hello",Toast.LENGTH_SHORT).show();
}
return false;
}
private void DialAction() {
}
private void ViceoAction() {
}
@Override
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
super.initialize(cordova, webView);
}
第二步:
在res/xml/config.xml下添加插件类(这里的name和以下的操作有关系)
<feature name="Voice">
<param name="android-package" value="com.sunrise.voice.VoicePlugin"></param>
</feature>
第三步:
在assets/www/plugins下,建立一个包
com.sunrise.voice,在这个包下面建立一个xx.js(这里我建立问voice.js)
cordova.define("com.sunrise.voice.voice", function(require, exports, module) {
var exec = require('cordova/exec');
module.exports = {
tt: function (successCallback, errorCallback, args) {
exec(successCallback, errorCallback, "Voice", "tt", args);
},
};
})
第四步:
在assets/www/cordova_plugins.js下添加插件配置
file:是第三步的文件路径
id:是第三步的 com.sunrise.voice.voice
merges:调用的方法
{
"file": "plugins/com.sunrise.voice/voice.js",
"id": "com.sunrise.voice.voice",
"merges": [
"navigator.voice"
]
}
第五步:
在assets/www/index.html下开始测试
<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", onDeviceReady, false);
function goDial() { navigator.voice.tt(function success(res){},function error(e){},[1]) }
</script>
<body>
<div class="app">
<p><a href="#" onclick="goDial(); return false;">Show Alert</a></p>
</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>