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

J2ME 撥打電話功能實作範例:platformRequest 與 tel 協定

     編輯:J2ME

功能概述

MIDP 2.0 提供 MIDlet.platformRequest(String url) 方法,支援 tel: 協定直接啟動撥號介面。本範例示範建立簡單 UI,輸入電話號碼後一鍵撥打。

完整原始碼

import javax.microedition.io.ConnectionNotFoundException;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class MakeCall extends MIDlet implements CommandListener {

    private Display display;
    private Form mainForm;
    private Command cmdExit, cmdDial;
    private TextField phoneField;

    public MakeCall() {}

    public void startApp() {
        display = Display.getDisplay(this);
        mainForm = new Form("撥號測試");
        cmdExit = new Command("離開", Command.EXIT, 1);
        cmdDial = new Command("撥打", Command.SCREEN, 1);
        phoneField = new TextField("電話號碼:", "", 20, TextField.PHONENUMBER);
        mainForm.append(phoneField);
        mainForm.addCommand(cmdDial);
        mainForm.addCommand(cmdExit);
        mainForm.setCommandListener(this);
        display.setCurrent(mainForm);
    }

    public void pauseApp() {}

    public void destroyApp(boolean unconditional) {}

    public void commandAction(Command c, Displayable d) {
        if (c == cmdExit) {
            destroyApp(false);
            notifyDestroyed();
        } else if (c == cmdDial) {
            String number = phoneField.getString().trim();
            if (number.length() > 0) {
                try {
                    platformRequest("tel:" + number);
                } catch (ConnectionNotFoundException e) {
                    e.printStackTrace();
                    // 可顯示 Alert 提示不支援撥號
                }
            }
        }
    }
}

關鍵點解析

  • TextField.PHONENUMBER:限制輸入鍵盤為數字鍵盤,提升使用體驗。
  • platformRequest 為非同步:呼叫後 MIDlet 可能進入 paused 狀態,需正確實作 pauseApp/startApp 處理回歸。
  • 例外處理:裝置不支援 tel: 協定時會拋出 ConnectionNotFoundException,務必捕獲並友善提示。

實機測試建議

  1. 確認手機支援 MIDP 2.0 且允許非受信任 MIDlet 存取電話功能(部分運營商需簽名)。
  2. 測試號碼格式:國碼、區碼、分機號等特殊字元是否需編碼。
  3. 驗證撥號介面返回後,MIDlet 能正常恢復顯示。

延伸應用

同樣原理可應用於 sms:、mailto:、http: 等協定,整合通訊錄、簡訊、瀏覽器等原生功能。

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