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 提示不支援撥號
}
}
}
}
}
pauseApp/startApp 處理回歸。tel: 協定時會拋出 ConnectionNotFoundException,務必捕獲並友善提示。同樣原理可應用於 sms:、mailto:、http: 等協定,整合通訊錄、簡訊、瀏覽器等原生功能。