普通S60手機
前段時間,適用了一款J2ME軟件,界面采用高級界面實現。由於之前沒有高級界面開發經驗,對高級界面的各種API也不是特別熟悉,所以對該軟件的“特殊功能”也少見多怪一番:該軟件在Nokia/6600上面,輸入手機號碼時,可以調出本地電話本,並可將電話本中的手機號碼。反編譯所有class文件,並沒有發現該軟件導入了特殊的擴展包。對此深感疑惑,google,baidu一番以後,終於獲得答案。
大部分的S60終端中,定義TextFeild時,將 constraints指定為PHONENUMBER,即可。代碼如下:
Java 代碼
TextField text = new TextField(“電話”,null,12,TextFIEld. PHONENUMBER);
這應該屬於Nokia廠商的底層實現。目前,測試的手機中,Nokia/6600和Nokia/N72是支持的,而MOTO/E680,Moto/A1200,SEK700以及Nokia/3100等機型是不支持該功能的。希望對該問題感興趣的朋友,幫忙多做些測試,也是對這個問題的有效補充。
PIM包
PIM包定義了訪問終端本地重要數據的API,本文的重點是討論如何使用PIM訪問手機本地電話本。對於PIM的介紹,請參考mingJava的文章《J2ME可選包—PIM介紹》。
Java 代碼
/**
* 訪問本地電話本數據
*
*/
private void pimVisit ()
{
String[] names = PIM.getInstance().listPIMLists(PIM.CONTACT_LIST);
try
{
for (int i = 0; i < names.length; i++)
{
display.append("AdrBookName: " + names[i] + "n");
ContactList list = (ContactList) PIM.getInstance().openPIMList(
PIM.CONTACT_LIST, PIM.READ_ONLY, names[i]);
/*
* 遍歷所有的記錄,這裡主要獲取記錄的姓名和電話號碼
*/
Contact contact;
int count = 0;
for (Enumeration e = list.items(); e.hasMoreElements();)
{
contact = (Contact) e.nextElement();
String name;
name = contact.getString(Contact.FORMATTED_NAME, 0);
String tel = contact.getString(Contact.TEL, 0);
display.append(name+" "+tel + "n");
count++;
}
display.append("所有記錄數量:" + count + "n");
list.close();
}
}
catch (PIMException e)
{
}
}
使用PIM不僅可以讀取本地電話本數據,而且可以修改或增加電話本記錄,這點也是上面所討論的方法無法相比的。應該說,PIM對電話本的操作更加靈活,並且可控制。