phonegap插件写法入门的一个很好的例子(发送短信调用的例子)
2012-07-14 00:09
603 查看
理论知识可以看这篇:http://www.adobe.com/devnet/html5/articles/extending-phonegap-with-native-plugins-for-android.html#articlecontentAdobe_numberedheader
内容转自:/article/8235069.html
快过年回家了,为了不阉割phonegap开发的介绍,在今天完成phonegap的最后一个介绍,在上一篇中提到过的如何开发phonegap的插件。
目前PhoneGap虽然提供了很多的API,但是我们也很容易发现,他有很多地方不能满足我们的需求,比如发短信。我也将介绍如何开发一个针对PhoneGap发短信的Plugin。(Android 版本)。
1、创建一个Android工程,创建之后的目录结构如图:
2、把PhoneGap的android版jar包、javascript和xml文件夹加入工程。(参照上一篇中的做法)目录结构:
3、新增一个类MessagePlugin
这个类就是负责发送短信功能的具体类,可以调用发送短信的android API,当然如果是其他功能,则调用相应的API,但是当使用这个API时记得申请权限。
具体代码:
Java代码
package com.phonegap.kiddyu.plugin;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.telephony.SmsManager;
import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;
public class MessagePlugin extends Plugin
{
private static final String
SEND = "send";
@Override
public PluginResult
execute(String action, JSONArray data, String callbackId) {
PluginResult result;
if (SEND.equals(action))
{
try {
JSONObject jsonObj = new JSONObject();
String target = data.getString(0);
String content = data.getString(1);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(target, null,
content, null, null);
jsonObj.put("target",
target);
jsonObj.put("content",
content);
result = new PluginResult(PluginResult.Status.OK,
jsonObj);
} catch (JSONException
ex) {
result = new PluginResult(PluginResult.Status.JSON_EXCEPTION);
}catch(IllegalArgumentException
ex){
result = new PluginResult(PluginResult.Status.ERROR);
}
} else {
result = new PluginResult(PluginResult.Status.INVALID_ACTION);
}
return result;
}
}
[java] view
plaincopy
package com.phonegap.kiddyu.plugin;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.telephony.SmsManager;
import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;
public class MessagePlugin extends Plugin {
private static final String SEND = "send";
@Override
public PluginResult execute(String action, JSONArray data, String callbackId) {
PluginResult result;
if (SEND.equals(action)) {
try {
JSONObject jsonObj = new JSONObject();
String target = data.getString(0);
String content = data.getString(1);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(target, null, content, null, null);
jsonObj.put("target", target);
jsonObj.put("content", content);
result = new PluginResult(PluginResult.Status.OK, jsonObj);
} catch (JSONException ex) {
result = new PluginResult(PluginResult.Status.JSON_EXCEPTION);
}catch(IllegalArgumentException ex){
result = new PluginResult(PluginResult.Status.ERROR);
}
} else {
result = new PluginResult(PluginResult.Status.INVALID_ACTION);
}
return result;
}
}
4、为phonegap增加一个javascript的API
在工程目录www/js下面增加一个javascript文件:phonegapPlugin.js,然后加入代码:
Javascript代码
var Message
= function(){};
Message.prototype
= {
send: function(success,
error, target, content){
PhoneGap.exec(success, error, "MessagePlugin", "send",
[target, content]);
}
};
PhoneGap.addConstructor(function()
{
PhoneGap.addPlugin("message", new Message());
});
[javascript] view
plaincopy
var Message = function(){};
Message.prototype = {
send: function(success, error, target, content){
PhoneGap.exec(success, error, "MessagePlugin", "send", [target, content]);
}
};
PhoneGap.addConstructor(function() {
PhoneGap.addPlugin("message", new Message());
});
关键的方法是PhoneGap.exec(success, error, "MessagePlugin", "send", [target, content]);
做一下简单的介绍:
success:方法执行成功时调用该函数;
error:方法执行失败时调用该函数;
"MessagePlugin":类名,最好与前面创建的Java类一个样;
"send":插件类中的参数String action;
[target, content]:一个数据,插件类中的参数JSONObject data;
PhoneGap.addPlugin("message", new Message());中的"Message"是你调用send方法时的实例名称。(不知道这样叫是否准确)
5、将自己的插件加入到PhoneGap的配置中
打开目录中res/xml/plugins.xml文件,在最后面加上
<plugin name="MessagePlugin" value="com.phonegap.kiddyu.plugin.MessagePlugin"/>
注意name要和你的插件类名一致! value是类的包名.类名。
插件到这里就算完成了,让我们测试一下到底能不能工作吧。
加入一个简单的html页面(上一篇已经介绍怎么开发,这里不做重复介绍),代码参照下面:
Html代码
<!DOCTYPE
html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<script type="text/javascript" charset="utf-8" src="../js/jquery_1_6_4.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/phonegap-1.2.0.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/phonegapPlugin.js"></script>
<script type="text/javascript">
$(function(){
var onSend = function(){
var success = function(data){
alert("tel : " + data.target + ', and content : ' + data.content);
};
var error = function(e){
alert(e);
};
var tel =
$('#tel').val();
var content =
$('#content').val();
window.plugins.message.send(success, error, tel, content);
};
$('#send').bind('click', onSend);
});
</script>
</head>
<body>
<div id="messageDiv">
<input type="tel" id="tel" value="5556" />
<textarea rows="20" cols="25" id="content"></textarea>
<button type="button" id="send">Send
Me</button>
</div>
</body>
</html>
[html] view
plaincopy
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" charset="utf-8" src="../js/jquery_1_6_4.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/phonegap-1.2.0.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/phonegapPlugin.js"></script>
<script type="text/javascript">
$(function(){
var onSend = function(){
var success = function(data){
alert("tel : " + data.target + ', and content : ' + data.content);
};
var error = function(e){
alert(e);
};
var tel = $('#tel').val();
var content = $('#content').val();
window.plugins.message.send(success, error, tel, content);
};
$('#send').bind('click', onSend);
});
</script>
</head>
<body>
<div id="messageDiv">
<input type="tel" id="tel" value="5556" />
<textarea rows="20" cols="25" id="content"></textarea>
<button type="button" id="send">Send Me</button>
</div>
</body>
</html>
注意在页面中加入你自己的phonegapPlugin.js,而且顺序必须在phonegap.js之后。
其他的都参照上一篇中,修改自己的Activity就开始测试吧!一下是测试截图:
内容转自:/article/8235069.html
快过年回家了,为了不阉割phonegap开发的介绍,在今天完成phonegap的最后一个介绍,在上一篇中提到过的如何开发phonegap的插件。
目前PhoneGap虽然提供了很多的API,但是我们也很容易发现,他有很多地方不能满足我们的需求,比如发短信。我也将介绍如何开发一个针对PhoneGap发短信的Plugin。(Android 版本)。
1、创建一个Android工程,创建之后的目录结构如图:
2、把PhoneGap的android版jar包、javascript和xml文件夹加入工程。(参照上一篇中的做法)目录结构:
3、新增一个类MessagePlugin
这个类就是负责发送短信功能的具体类,可以调用发送短信的android API,当然如果是其他功能,则调用相应的API,但是当使用这个API时记得申请权限。
具体代码:
Java代码
package com.phonegap.kiddyu.plugin;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.telephony.SmsManager;
import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;
public class MessagePlugin extends Plugin
{
private static final String
SEND = "send";
@Override
public PluginResult
execute(String action, JSONArray data, String callbackId) {
PluginResult result;
if (SEND.equals(action))
{
try {
JSONObject jsonObj = new JSONObject();
String target = data.getString(0);
String content = data.getString(1);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(target, null,
content, null, null);
jsonObj.put("target",
target);
jsonObj.put("content",
content);
result = new PluginResult(PluginResult.Status.OK,
jsonObj);
} catch (JSONException
ex) {
result = new PluginResult(PluginResult.Status.JSON_EXCEPTION);
}catch(IllegalArgumentException
ex){
result = new PluginResult(PluginResult.Status.ERROR);
}
} else {
result = new PluginResult(PluginResult.Status.INVALID_ACTION);
}
return result;
}
}
[java] view
plaincopy
package com.phonegap.kiddyu.plugin;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.telephony.SmsManager;
import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;
public class MessagePlugin extends Plugin {
private static final String SEND = "send";
@Override
public PluginResult execute(String action, JSONArray data, String callbackId) {
PluginResult result;
if (SEND.equals(action)) {
try {
JSONObject jsonObj = new JSONObject();
String target = data.getString(0);
String content = data.getString(1);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(target, null, content, null, null);
jsonObj.put("target", target);
jsonObj.put("content", content);
result = new PluginResult(PluginResult.Status.OK, jsonObj);
} catch (JSONException ex) {
result = new PluginResult(PluginResult.Status.JSON_EXCEPTION);
}catch(IllegalArgumentException ex){
result = new PluginResult(PluginResult.Status.ERROR);
}
} else {
result = new PluginResult(PluginResult.Status.INVALID_ACTION);
}
return result;
}
}
4、为phonegap增加一个javascript的API
在工程目录www/js下面增加一个javascript文件:phonegapPlugin.js,然后加入代码:
Javascript代码
var Message
= function(){};
Message.prototype
= {
send: function(success,
error, target, content){
PhoneGap.exec(success, error, "MessagePlugin", "send",
[target, content]);
}
};
PhoneGap.addConstructor(function()
{
PhoneGap.addPlugin("message", new Message());
});
[javascript] view
plaincopy
var Message = function(){};
Message.prototype = {
send: function(success, error, target, content){
PhoneGap.exec(success, error, "MessagePlugin", "send", [target, content]);
}
};
PhoneGap.addConstructor(function() {
PhoneGap.addPlugin("message", new Message());
});
关键的方法是PhoneGap.exec(success, error, "MessagePlugin", "send", [target, content]);
做一下简单的介绍:
success:方法执行成功时调用该函数;
error:方法执行失败时调用该函数;
"MessagePlugin":类名,最好与前面创建的Java类一个样;
"send":插件类中的参数String action;
[target, content]:一个数据,插件类中的参数JSONObject data;
PhoneGap.addPlugin("message", new Message());中的"Message"是你调用send方法时的实例名称。(不知道这样叫是否准确)
5、将自己的插件加入到PhoneGap的配置中
打开目录中res/xml/plugins.xml文件,在最后面加上
<plugin name="MessagePlugin" value="com.phonegap.kiddyu.plugin.MessagePlugin"/>
注意name要和你的插件类名一致! value是类的包名.类名。
插件到这里就算完成了,让我们测试一下到底能不能工作吧。
加入一个简单的html页面(上一篇已经介绍怎么开发,这里不做重复介绍),代码参照下面:
Html代码
<!DOCTYPE
html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<script type="text/javascript" charset="utf-8" src="../js/jquery_1_6_4.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/phonegap-1.2.0.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/phonegapPlugin.js"></script>
<script type="text/javascript">
$(function(){
var onSend = function(){
var success = function(data){
alert("tel : " + data.target + ', and content : ' + data.content);
};
var error = function(e){
alert(e);
};
var tel =
$('#tel').val();
var content =
$('#content').val();
window.plugins.message.send(success, error, tel, content);
};
$('#send').bind('click', onSend);
});
</script>
</head>
<body>
<div id="messageDiv">
<input type="tel" id="tel" value="5556" />
<textarea rows="20" cols="25" id="content"></textarea>
<button type="button" id="send">Send
Me</button>
</div>
</body>
</html>
[html] view
plaincopy
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" charset="utf-8" src="../js/jquery_1_6_4.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/phonegap-1.2.0.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/phonegapPlugin.js"></script>
<script type="text/javascript">
$(function(){
var onSend = function(){
var success = function(data){
alert("tel : " + data.target + ', and content : ' + data.content);
};
var error = function(e){
alert(e);
};
var tel = $('#tel').val();
var content = $('#content').val();
window.plugins.message.send(success, error, tel, content);
};
$('#send').bind('click', onSend);
});
</script>
</head>
<body>
<div id="messageDiv">
<input type="tel" id="tel" value="5556" />
<textarea rows="20" cols="25" id="content"></textarea>
<button type="button" id="send">Send Me</button>
</div>
</body>
</html>
注意在页面中加入你自己的phonegapPlugin.js,而且顺序必须在phonegap.js之后。
其他的都参照上一篇中,修改自己的Activity就开始测试吧!一下是测试截图:
相关文章推荐
- 【JAVA基础】0013--------java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- 十分钟开发一个调用Activity的PhoneGap插件
- Maya插件开发入门(2):一个简单的例子
- 一个给手机发送短信的例子
- jQuery插件入门学习—— 学习目标:写一个星级评分插件(jquery插件基础写法)
- 一个rmi远程调用入门的例子
- 程序调用飞信API发送免费短信(JAVA例子,其他语言一样用)
- 利用java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- HTC (HTML Component) 入门 一个很好的例子(转)
- phonegap3.4插件开发入门例子
- 利用java实现的一个发送手机短信的小例子的补充
- jquery学习心得:一个很好的css和js函数调用的例子
- 利用java实现的一个发送手机短信的小例子
- HTC (HTML Component) 入门 ---一个很好的例子(转)
- Maya插件开发入门(5):一个完整的例子
- 利用java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- 一个设计性很强的入门插件开发例子