J2ME(MIDP 2.0)與 WAP 同樣能實現撥號,但底層機制截然不同:
platformRequest("tel:號碼"),系統將撥號介面推至前景,MIDlet 轉背景執行,掛斷後自動回復。public void platformRequest(String url) throws ConnectionNotFoundException
url 格式:"tel:" + phoneNumber(如 "tel:13800138000")pauseApp() 狀態ConnectionNotFoundException(裝置不支援或協定未註冊)startApp() 恢復前景package com.j2medev.call;
import javax.microedition.io.ConnectionNotFoundException;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class TeleMIDlet extends MIDlet implements CommandListener {
private Display display;
private List mainList;
public void startApp() {
if (display == null) {
display = Display.getDisplay(this);
mainList = new List("撥號測試", List.IMPLICIT);
mainList.append("13800138000", null);
mainList.append("13900139000", null);
mainList.setCommandListener(this);
}
display.setCurrent(mainList);
}
public void commandAction(Command cmd, Displayable d) {
if (cmd == List.SELECT_COMMAND) {
String number = mainList.getString(mainList.getSelectedIndex());
try {
platformRequest("tel:" + number);
} catch (ConnectionNotFoundException e) {
e.printStackTrace();
// 可在此彈出 Alert 提示裝置不支援
}
}
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
}
+86138xxxxxxxx),提升跨網路漫遊成功率。<input name="phone_no" format="*m" value="" />
<do type="option" label="撥打">
<go href="wtai://wp/mc;$(phone_no)" />
</do>
<a href="wtai://wp/mc;13800138000">撥打 13800138000</a>
wtai://wp/mc;:Wireless Telephony Applications Interface - Make Call* 表示結束(部分瀏覽器需要)| 維度 | J2ME (MIDP 2.0) | WAP/WML |
|---|---|---|
| 開發模式 | 客戶端原生應用 | 伺服器端動態頁面 |
| 離線可用性 | 應用安裝後離線可用 | 需網路連線載入 WML |
| UI 客製化 | 高(自訂 List/Canvas) | 低(受限於瀏覽器渲染) |
| 部署門檻 | 需 OTA 安裝/簽名 | 零安裝,瀏覽器直達 |
| 適用場景 | 通訊錄、商務工具、常用聯繫人 | 網頁黃頁、臨時查詢、行銷落地頁 |
J2ME 與 WAP 各有千秋:高頻、離線、介面豐富的撥號需求首選 J2ME MIDlet;一次性、輕量、廣泛觸達的場景適合 WAP/WML。現代行動開發雖已轉向 Android/iOS,但理解這兩種經典架構的設計哲學——智慧客戶端的自主性 vs. 薄客戶端的普及性——對於把握當下跨平台框架(Flutter、React Native、PWA)的權衡依然極具啟發意義。