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

J2ME 可選包 PIM 完整開發指南:通訊錄、行程、待辦存取實戰

     編輯:J2ME

PIM 簡介:個人資訊管理擴展包

PIM (Personal Information Management) 針對使用者核心資料:通訊錄、行程、待辦事項。定義於 JSR 75,屬可選包,不提供完整運行環境,需裝置支援並對 MIDP 進行擴展。移植性受限,使用前必須檢測可用性。

可用性檢測


String v = System.getProperty("microedition.pim.version");
if (v != null) {
    // PIM 可用
} else {
    // PIM 不可用
}

⚠️ 無法透過 Class.forName("javax.microedition.pim.PIM") 檢測,因實現類由裝置廠商提供,編譯期不可見。

三大核心資料類型

類型List 介面Item 介面常用欄位範例
通訊錄ContactListContactNAME、TEL、EMAIL、ADDR、BIRTHDAY、PHOTO
行程EventListEventSUMMARY、LOCATION、START、END、ALARM
待辦ToDoListToDoSUMMARY、PRIORITY、DUE、COMPLETION、COMPLETE

裝置至少支援一種,不保證三種皆有。所有 API 在 javax.microedition.pim 包下。

核心操作流程

  1. PIM pim = PIM.getInstance(); 取得單例
  2. pim.openPIMList(type, mode) 開啟列表(READ_ONLY/READ_WRITE)
  3. 透過 items() 取得 Enumeration 遍歷,或 createContact()/createEvent()/createToDo() 建立新項目
  4. 欄位存取:getString()/getDate()/addString()/addDate(),必先用 isSupportedField() 檢測欄位可用性
  5. commit() 持久化,close() 釋放資源

實戰代碼範例

新增通訊錄聯繫人


ContactList cl = null;
try {
    cl = (ContactList) PIM.getInstance().openPIMList(PIM.CONTACT_LIST, PIM.READ_WRITE);
    Contact c = cl.createContact();
    if (cl.isSupportedField(Contact.NAME_FORMATTED))
        c.addString(Contact.NAME_FORMATTED, PIMItem.ATTR_NONE, "Jane Doe");
    if (cl.isSupportedField(Contact.TEL))
        c.addString(Contact.TEL, Contact.ATTR_MOBILE, "0912345678");
    c.commit();
} catch (PIMException | SecurityException e) {
    // 處理異常:無權限、裝置不支援等
} finally {
    if (cl != null) try { cl.close(); } catch (PIMException ignore) {}
}

新增行程


EventList el = (EventList) PIM.getInstance().openPIMList(PIM.EVENT_LIST, PIM.READ_WRITE);
Event e = el.createEvent();
if (el.isSupportedField(Event.SUMMARY)) e.addString(Event.SUMMARY, PIMItem.ATTR_NONE, "Java Training");
if (el.isSupportedField(Event.START)) e.addDate(Event.START, PIMItem.ATTR_NONE, startTime);
if (el.isSupportedField(Event.END)) e.addDate(Event.END, PIMItem.ATTR_NONE, endTime);
e.commit();
el.close();

新增待辦


ToDoList tl = (ToDoList) PIM.getInstance().openPIMList(PIM.TODO_LIST, PIM.READ_WRITE);
ToDo t = tl.createToDo();
if (tl.isSupportedField(ToDo.SUMMARY)) t.addString(ToDo.SUMMARY, PIMItem.ATTR_NONE, "Buy Halloween Candy");
if (tl.isSupportedField(ToDo.DUE)) t.addDate(ToDo.DUE, PIMItem.ATTR_NONE, System.currentTimeMillis());
t.commit();
tl.close();

安全模型:僅受信任 MIDlet 可存取

  • 未簽名/低信任 MIDlet 呼叫 openPIMList 會拋出 SecurityException
  • 需透過廠商簽名或用戶授權提升權限
  • 符合 MIDP 權限模型:javax.microedition.pim.ContactList.read/write 等

PIM vs RMS:核心差異對照

結語

PIM 為 J2ME 應用打通了裝置原生個人資料的存取通道。掌握「檢測可用性 → 開啟列表 → 欄位級防護操作 → 安全權限申請」的標準流程,並善用 vCard/vCalendar 互通標準,即可構建深度整合手機原生體驗的應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
維度PIMRMS
資料語義結構化實體位元組陣列
跨應用共享標準格式易解析需協議約定
資料來源本機、SIM、遠端資料庫僅本機
匯入/匯出支援 vCard/vCalendar無內建
查詢能力欄位級檢索全掃描