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

無線消息 API 整理:JSR 205 (WMA 2.0) 與 JSR 102 (WMA 1.1) 差異與工具類封裝

     編輯:J2ME

前言

手機程式開發最常見需求即 SMS、MMS、Email。Sun 透過 JSR 102 (WMA 1.1) 與 JSR 205 (WMA 2.0) 完善支援。JSR 205 完全向下相容 JSR 102,舊代碼無需修改即可運行。

核心架構回顧

  • 基於 GCF,Connector.open() 建立 MessageConnection。
  • 支援 TextMessage、BinaryMessage、MultipartMessage (MMS)、Cell Broadcast (唯讀)。
  • 發送簡單:建立連線 → newMessage() → 設定 Payload → send()。
  • 接收需實作 MessageListener,於 notifyIncomingMessage() 回調中讀取。

JSR 102 vs JSR 205 差異

特性JSR 102 (WMA 1.1)JSR 205 (WMA 2.0)
SMS 文字/二進制✓✓
Cell Broadcast 接收✓✓
MMS (MultipartMessage)✗✓
MessageListener 介面✓✓ (擴充)
向下相容-完全相容

三大傳遞模式應用場景

  1. Server → Phone:CRM 推送數據,手機端友好呈現。
  2. Phone → Server:手機上傳數據 (HTTP 不穩時備援)。
  3. Phone → Phone:遊戲資料交換、社交分享。

通用工具類封裝 (MessagingUtil)

public final class MessagingUtil {
    public static void sendTextMessage(String phone, String text) throws IOException {
        checkPhone(phone);
        MessageConnection conn = (MessageConnection) Connector.open("sms://" + phone);
        TextMessage msg = (TextMessage) conn.newMessage(MessageConnection.TEXT_MESSAGE);
        msg.setPayloadText(text);
        conn.send(msg);
    }

    public static void sendBinaryMessage(String phone, byte[] data) throws IOException {
        checkPhone(phone);
        MessageConnection conn = (MessageConnection) Connector.open("sms://" + phone);
        BinaryMessage bm = (BinaryMessage) conn.newMessage(MessageConnection.BINARY_MESSAGE);
        bm.setAddress(phone);
        bm.setPayloadData(data);
        conn.send(bm);
    }

    private static void checkPhone(String phone) throws PhoneNumberException {
        if (phone == null || phone.equals(""))
            throw new PhoneNumberException("手機號碼不能為空!");
        try { Integer.parseInt(phone); }
        catch (NumberFormatException e) { throw new PhoneNumberException("手機號碼必須為數字!"); }
    }
}

結語

掌握 WMA 兩版本差異,封裝工具類,即可快速在 J2ME 應用中整合 SMS/MMS 功能,拓展商業與遊戲場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved