開機自動啟動 MIDlet 是 J2ME 開發者長久願望。Sony Ericsson JP-7 (K800, W950, P1i 等) 通過 Push Registry 機制實現此功能。注意:早期機型(如 K790)不支援。
MIDlet-Push-1: autostart://:, com.example.AutoStartStatic, *
autostart://:(注意雙冒號)。* 表示接受任何發送者(此處無發送者概念)。
public void registerAutoStart() {
String[] conns = PushRegistry.listConnections(false);
if (conns.length == 0) {
try {
PushRegistry.registerConnection("autostart://:", "com.example.AutoStartDyn", "*");
showStatus("已註冊開機自啟動");
} catch (Exception e) {
showStatus("註冊失敗: " + e);
}
} else {
showStatus("已存在註冊");
}
}
public void unregisterAutoStart() {
if (PushRegistry.unregisterConnection("autostart://:")) {
showStatus("已取消註冊");
} else {
showStatus("無註冊或取消失敗");
}
}
public class AutoStartDyn extends MIDlet {
public void startApp() {
// 判斷是否為開機自啟動喚醒
String[] args = getAppProperty("MIDlet-Args"); // 或檢查啟動上下文
if (isAutoStart()) {
// 執行後台任務:同步數據、檢查更新、上報心跳
performBackgroundTask();
notifyDestroyed(); // 完成後靜默退出,不打擾用戶
} else {
// 用戶手動啟動,進入正常 UI
showMainUI();
}
}
// ...
}
MIDlet-Permissions: javax.microedition.io.PushRegistry。JP-7 平台通過 autostart://: Push 註冊實現開機自啟,提供靜態/動態兩種方式。合理利用可構建後台同步、推送代收等增值服務,但必須克制介面彈出、控制喚醒頻率,尊重用戶體驗與電量。