J2ME PIM 获得通讯录 联系人信息

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);

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值