import Java.util.Enumeration;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.pim.Contact;
import javax.microedition.pim.ContactList;
import javax.microedition.pim.PIM;
import javax.microedition.pim.PIMException;
import javax.microedition.pim.PIMItem;
public class PIMMIDlet extends MIDlet implements CommandListener{
static final Command CMD_EXIT = new Command("退出", Command.EXIT, 0);
static final Command CMD_VIEW = new Command("查看详情", Command.OK, 0);
static final Command CMD_ADD = new Command("添加", Command.ITEM, 0);
static final Command CMD_RETURN = new Command("返回", Command.OK, 0);
static final Command CMD_SAVE = new Command("保存", Command.OK, 0);
List list = new List("通讯录", List.IMPLICIT);
Form form = null;
PIM pim = PIM.getInstance();
ContactList contactList = null;
Contact[] contacts = null;
Contact contact = null;
Enumeration enum = null;
public void getContactList() {
try {
contactList = (ContactList) pim.openPIMList(PIM.CONTACT_LIST, PIM.READ_WRITE);
enum = contactList.items();
int index = 0;
if(list.size()!=0)
{
list.deleteAll();
}
while(enum.hasMoreElements()){
Contact contact = (Contact)enum.nextElement();
list.append(contact.getString(Contact.FORMATTED_NAME, 0), null);
index++;
}
} catch (PIMException e) {
e.printStackTrace();
}
}
public PIMMIDlet() {
String v = System.getProperty( "microedition.pim.version" );
if( v != null ){
getContactList();
}
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
try {
this.getContactList();
list.addCommand(CMD_ADD);
list.addCommand(CMD_VIEW);
list.addCommand(CMD_EXIT);
list.setSelectCommand(CMD_VIEW);
list.setCommandListener(this);
} catch (Exception e) {
list.append(e.toString(), null);
}
Display.getDisplay(this).setCurrent(list);
}
public void commandAction(Command cmd, Displayable dis) {
try{
if(cmd == CMD_VIEW){
int selectedIndex = list.getSelectedIndex();
String title = list.getString(selectedIndex);
Contact contact = null;
while(enum.hasMoreElements()){
contact = (Contact)enum.nextElement();
if(contact.getString(Contact.FORMATTED_NAME, 0).equals(title)){
break;
}
}
form = new Form(selectedIndex+". "+title);
form.append(contact.getString(Contact.FORMATTED_NAME, 0));
form.append(contact.getString(Contact.TEL, 0));
form.addCommand(CMD_RETURN);
form.setCommandListener(this);
Display.getDisplay(this).setCurrent(form);
}
if(cmd == CMD_RETURN){
Display.getDisplay(this).setCurrent(list);
}
if(cmd == CMD_EXIT){
notifyDestroyed();
}
if(cmd == CMD_ADD){
form = new Form("添加联系人");
form.append(familyName);
form.append(givenName);
form.append(numberField);
form.append(email);
form.addCommand(CMD_SAVE);
form.addCommand(CMD_EXIT);
form.setCommandListener(this);
Display.getDisplay(this).setCurrent(form);
}
if(cmd == CMD_SAVE){
Contact contact = contactList.createContact();
if(contactList.isSupportedField(Contact.NAME)){
String[] name = new String[contactList.stringArraySize(Contact.NAME)];
name[Contact.NAME_GIVEN] = givenName.getString();
name[Contact.NAME_FAMILY] = familyName.getString();
contact.addStringArray(Contact.NAME, PIMItem.ATTR_NONE, name);
}
if(contactList.isSupportedField(Contact.FORMATTED_NAME)){
contact.addString(Contact.FORMATTED_NAME, PIMItem.ATTR_NONE, "Mark Jacobs");
}
if(contactList.isSupportedField(Contact.NICKNAME)){
contact.addString(Contact.FORMATTED_NAME, PIMItem.ATTR_NONE, "Mark Ron Jacobs");
}
if(contactList.isSupportedField(Contact.TEL)){
contact.addString(Contact.TEL, Contact.ATTR_MOBILE, numberField.getString());
}
if(contactList.isSupportedField(Contact.EMAIL)){
contact.addString(Contact.EMAIL,PIMItem.ATTR_NONE, email.getString());
}
int[] a = contactList.getSupportedFields();
// int[] attr = contactList.getSupportedAttributes(Contact.FORMATTED_NAME);
// for (int i = 0; i < attr.length; i++) {
// form.append("support "+attr[i]);
// }
// for(int i=0; i //
// form.append("support "+a[i]);
// }
Display.getDisplay(this).setCurrent(form);
try{
contact.commit();
}catch(PIMException e){
String info = e.toString();
alert = new Alert(info);
}
}
}catch(Exception e){
form.append(e.toString());
Display.getDisplay(this).setCurrent(form);
}
}
Alert alert = null;
TextField familyName = new TextField("姓", "", 30, TextField.ANY);
TextField givenName = new TextField("名", "", 30, TextField.ANY);
TextField numberField = new TextField("号码", "", 18, TextField.NUMERIC);
TextField email = new TextField("E-mail", "", 30, TextField.ANY);
}