作者使用 Sony Ericsson K508C (支援 MIDP 2.0) 進行 J2ME 簡訊發送開發,記錄實作細節與號碼格式差異。
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
public boolean SendSMS(String Number, String Message) {
char[] Addr = Number.toCharArray();
String destAddr;
// 號碼格式判斷
if (Addr.length >= 3 && Addr[0]=='1' && Addr[1]=='0' && Addr[2]=='6') {
// 短碼 (106 開頭) - 不加 +
destAddr = "sms://" + Number;
} else {
// 一般手機號碼
if (Addr[0] != '+') {
destAddr = "sms://+" + Number; // 加上國碼前綴 +
} else {
destAddr = "sms://" + Number; // 已含 +
}
}
boolean result = true;
try {
MessageConnection conn = (MessageConnection) Connector.open(destAddr);
TextMessage msg = (TextMessage) conn.newMessage(MessageConnection.TEXT_MESSAGE);
msg.setAddress(destAddr);
msg.setPayloadText(Message);
conn.send(msg);
conn.close();
result = true;
} catch (Exception e) {
result = false;
}
return result;
}
| 號碼類型 | 範例 | 協議格式 | 說明 |
|---|---|---|---|
| 一般手機 | 0912345678 | sms://+886912345678 | 需加國碼 + (台灣 +886),去掉前導 0 |
| 已含國碼 | +886912345678 | sms://+886912345678 | 直接使用 |
| 短碼/服務碼 | 10612345 | sms://10612345 | **不加 +**,直接發送 |