1、創建一個Android工程,創建之後的目錄結構如圖:
2、把PhoneGap的android版jar包、javascript和xml文件夾加入工程。(參照上一篇中的做法)目錄結構:
3、新增一個類MessagePlugin
這個類就是負責發送短信功能的具體類,可以調用發送短信的android API,當然如果是其他功能,則調用相應的API,但是當使用這個API時記得申請權限。
具體代碼:
- 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;
- }
- }
- 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;
- }
- }
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,然後加入代碼:
- 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());
- });
- 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());
- });
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頁面(上一篇已經介紹怎麼開發,這裏不做重複介紹),代碼參照下面:
- <!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>
- <!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>
<!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就開始測試吧!一下是測試截圖: