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

J2ME 發送簡訊 (SMS) 實作:號碼格式處理與完整代碼

     編輯:J2ME

必要引用

import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;

發送函數完整實作

public boolean sendSMS(String number, String message) {
    String destAddr;
    char[] chars = number.toCharArray();

    // 小靈通號碼 (106 開頭) 不加 '+'
    if (chars.length >= 3 && chars[0] == '1' && chars[1] == '0' && chars[2] == '6') {
        destAddr = "sms://" + number;
    } else {
        // 手機號碼:確保以 '+' 開頭
        if (chars[0] != '+') {
            destAddr = "sms://+" + number;
        } else {
            destAddr = "sms://" + number;
        }
    }

    try {
        MessageConnection conn = (MessageConnection) Connector.open(destAddr);
        TextMessage msg = (TextMessage) conn.newMessage(MessageConnection.TEXT_MESSAGE);
        msg.setAddress(destAddr);
        msg.setPayloadText(message);
        conn.send(msg);
        return true;
    } catch (Exception e) {
        // 建議記錄日誌或拋出自訂異常
        return false;
    }
}

關鍵細節說明

  • 號碼格式:國際格式需 + 號(如 +8869xxxxxxx);特服務碼 (106) 不加 +。
  • 例外處理:捕捉 IOException、SecurityException(權限不足)等,視產品需求決定是否重試或提示用戶。
  • 權限:JAD 需聲明 MIDlet-Permissions: javax.microedition.io.Connector.sms,部分手機需簽名才能發送。

擴充建議

  • 支援長簡訊自動分段(超過 160 字元)。
  • 加入發送狀態回報監聽 (Delivery Report)。
  • 整合通訊錄選擇號碼 UI。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved