首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

J2ME 發送簡訊實作:Sony Ericsson K508C 實測心得與號碼格式處理

     編輯:J2ME

背景

作者使用 Sony Ericsson K508C (支援 MIDP 2.0) 進行 J2ME 簡訊發送開發,記錄實作細節與號碼格式差異。

必要 Import

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;
}

關鍵心得:號碼格式差異

不同國家/運營商對短碼格式可能不同,實測為準。台灣 106 開頭為典型短碼,大陸 106/1065/1069 等同理。

部署提醒

  • **簽名權限**:未簽名 MIDlet 發送簡訊每次彈窗詢問,用戶體驗極差
  • **測試環境**:模擬器 (WTK) 可模擬發送,但無法真實送達,真機測試不可少
  • **例外處理**:生產碼務必細分 IOException/SecurityException,給用戶明確錯誤提示
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
號碼類型範例協議格式說明
一般手機0912345678sms://+886912345678需加國碼 + (台灣 +886),去掉前導 0
已含國碼+886912345678sms://+886912345678直接使用
短碼/服務碼10612345sms://10612345**不加 +**,直接發送