Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

(Difference between revisions)

Adding a contact to Phonebook in Java ME

From Wiki
Jump to: navigation, search
trashedDev (Talk | contribs)
(TrashedDev -)
trashedDev (Talk | contribs)
(TrashedDev -)
Line 5: Line 5:
|devices= Nokia 6131, Nokia E70, Nokia N78, Nokia C3-01, Nokia Asha 306, Nokia E7-00
|devices= Nokia 6131, Nokia E70, Nokia N78, Nokia C3-01, Nokia Asha 306, Nokia E7-00
|sdk= [ Nokia SDK 1.1 for Java], [ Nokia SDK 2.0 for Java(beta)], [ Nokia Symbian SDKs]
|sdk= [ Nokia SDK 1.1 for Java], [ Nokia SDK 2.0 for Java(beta)], [ Nokia Symbian SDKs]
|platform= S40, S60, Nokia Belle
|platform= Series 40, S60, Nokia Belle
|devicecompatability= <!-- Compatible devices (e.g.: All* (must have GPS) ) -->
|devicecompatability= <!-- Compatible devices (e.g.: All* (must have GPS) ) -->
|dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 -->
|dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 -->

Revision as of 08:31, 20 August 2012

Article Metadata
Code Example
Installation file: AddingContacts binaries
Tested with
Devices(s): Nokia 6131, Nokia E70, Nokia N78, Nokia C3-01, Nokia Asha 306, Nokia E7-00
Keywords: javax.microedition.pim.PIM, javax.microedition.pim.PIMItem, javax.microedition.pim.ContactList.createContact
Created: vltsoy (27 Nov 2008)
Last edited: trashedDev (20 Aug 2012)



This code snippet demonstrates how to add a specific contact to the contact list of the device.

The application creates a few input fields. After the user fills them in and presses the «Save» button, contact information with entered data will be added to the contact list, using the method ContactList.createContact().

If an error occurs, a message describing the error is displayed.

Source file:

import java.util.Date;
import java.util.TimeZone;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.TextField;
import javax.microedition.lcdui.DateField;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.MIDlet;
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 AddContact extends MIDlet implements CommandListener {
//Main form.
private Form form;
private Display display;
private Command exitCommand;
private Command addCommand;
// Text fields for contact data.
private TextField familyName;
private TextField givenName;
private TextField number;
private DateField birthday;
* Constructor. Constructs the object and initialises displayables.

public AddContact() {
form = new Form("Add PIM Contact");
// Add command buttons
addCommand = new Command("Save", Command.OK, 0);
exitCommand = new Command("Exit", Command.EXIT, 1);
// Create input fields
givenName = new TextField("Given name", "", 20, TextField.ANY);
familyName = new TextField("Family name", "", 20, TextField.ANY);
number = new TextField("Telephone", "", 20, TextField.NUMERIC);
birthday = new DateField("Birthdate", DateField.DATE,
birthday.setDate(new Date());
display = Display.getDisplay(this);
* From MIDlet.
* Called when the MIDlet is started.

public void startApp() {
// Check for availability of PIM interface.
if (System.getProperty("microedition.pim.version") == null) {
showError("PIM API not supported.", form);
* From MIDlet.
* Called to signal the MIDlet to enter the Paused state.

public void pauseApp() {
// No implementation required.
* From MIDlet.
* Called to signal the MIDlet to terminate.
* @param unconditional whether the MIDlet has to be unconditionally
* terminated

public void destroyApp(boolean unconditional) {
// No implementation required
* From CommandListener.
* Called by the system to indicate that a command has been invoked on a
* particular displayable.
* @param cmd the command that was invoked
* @param displayable the displayable where the command was invoked

public void commandAction(Command cmd, Displayable displayable) {
if (cmd == exitCommand) {
} else if (cmd == addCommand) {
* Adds contact to PIM contact list.

private void saveContact() {
ContactList contacts = null;
try {
// Retrieve the contact list
contacts = (ContactList) PIM.getInstance().openPIMList(
Contact contact = contacts.createContact();
String[] name =
new String[contacts.stringArraySize(Contact.NAME)];
if (contacts.isSupportedArrayElement(
Contact.NAME, Contact.NAME_FAMILY)) {
name[Contact.NAME_FAMILY] = familyName.getString();
if (contacts.isSupportedArrayElement(
Contact.NAME, Contact.NAME_GIVEN)) {
name[Contact.NAME_GIVEN] = givenName.getString();
if (contacts.isSupportedField(Contact.NAME)) {
contact.addStringArray(Contact.NAME, PIMItem.ATTR_NONE, name);
if (contacts.isSupportedField(Contact.TEL)) {
contact.addString(Contact.TEL, Contact.ATTR_HOME,
if (contacts.isSupportedField(Contact.BIRTHDAY)) {
contact.addDate(Contact.BIRTHDAY, PIMItem.ATTR_NONE,
} catch (PIMException e) {
showError(e.getMessage(), form);
* Shows error message
* @param message the message that will be displayed
* @param displayable the displayable where the message will be shown

private void showError(String message, Displayable displayable) {
Alert alert = new Alert("");
display.setCurrent(alert, displayable);


A new contact has been added to the contact list.

Supplementary material

The source file and an executable application are available at Media:Adding a contact to phonebook in‎.

134 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.


Thank you!

We appreciate your feedback.