`
woshizn
  • 浏览: 209761 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

得到blackberry中的联系人信息(j2me)

阅读更多

RIM有自己的API(BlackBerryContact.class)提供联系人信息。

但是需要签名才能运行。

我们可以用javax.microedition.pim .Contact 来得到电话里的联系人信息。

在bb运行时会弹出确认框,但不影响使用。

下面的table列举了不同信息分类,我们可以从中得到需要的信息。

Fields Type of Data Associated with Field
NAME, ADDR PIMItem.STRING_ARRAY
EMAIL, FORMATTED_NAME, NICKNAME, PHOTO_URL, PUBLIC_KEY_STRING, FORMATTED_ADDR, NOTE, ORG, TEL, TITLE, UID, URL PIMItem.STRING
BIRTHDAY, REVISION PIMItem.DATE
PHOTO, PUBLIC_KEY PIMItem.BINARY
CLASS PIMItem.INT

 

下面有一个我取联系人信息的例子:

 

首先写了一个map来存储联系人信息:

 

package com.kennan.conversion;

import java.util.Enumeration;

import net.rim.device.api.collection.ReadableIntMap;
import net.rim.device.api.collection.WritableIntMap;
import net.rim.device.api.util.IntEnumeration;
import net.rim.device.api.util.IntMultiMap;

/**
 * 
 * @author kennan.zhang
 * map
 * 
 */
public class ContackListMap extends IntMultiMap implements ReadableIntMap,
		WritableIntMap {

	public boolean contains(int key) {

		return super.containsKey(key);
	}

	public Object get(int key) {
		Enumeration e = super.elements(key);
		if (e.hasMoreElements()) {

			return e.nextElement();
		}
		return null;
	}

	public int getKey(Object element) {
		IntEnumeration ie = super.keys();
		if (ie.hasMoreElements()) {
			return ie.nextElement();
		}
		return 0;
	}

	public int size() {

		return super.size();
	}

	public void put(int key, Object element) {
		super.add(key, element);
	}

	public void remove(int key) {
		super.removeKey(key);
	}

	public void removeAll() {
		super.clear();
	}

}

 

 下面是获得联系人信息的方法。

 

package com.kennan.contactList;

import java.util.Enumeration;

import javax.microedition.pim.Contact;
import javax.microedition.pim.ContactList;
import javax.microedition.pim.PIM;
import javax.microedition.pim.PIMException;

import net.rim.device.api.ui.MenuItem;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.util.IntMultiMap;

import com.kennan.conversion.ContackListMap;
import com.kennan.conversion.HGB2PINYIN;

/**
 * 
 * @author kennan.zhang
 * 
 */
public final class ContactListScreen extends MainScreen {

	// 联系人列表
	private ContackListMap _ownContactList = new ContackListMap();

	private KennanContact _kapp;

	private String[] _tels;

	public ContactListScreen(KennanContact kapp) {
		super();
		_kapp = kapp;
		Enumeration e;
		String uid;
		String[] names;
		ContackListMap perInfo;
		Contact c;
		int ncount;
		StringBuffer name;
		int tcount;

		try {
			e = ((ContactList) PIM.getInstance().openPIMList(PIM.CONTACT_LIST,
					PIM.READ_WRITE)).items();

			while (e.hasMoreElements()) {
				perInfo = new ContackListMap();
				c = (Contact) e.nextElement();

				// UID
				uid = c.getString(Contact.UID, 0);

				// 合并 添加姓名
				names = c.getStringArray(Contact.NAME, 0);
				ncount = names.length;
				name = new StringBuffer();
				for (int i = 0; i < ncount; i++) {
					if (names[i] != null) {

						name.append(names[i]);
						name.append(' ');
					}
				}
				perInfo.put(Contact.NAME, name);

				// 电话
				tcount = c.countValues(Contact.TEL);
				_tels = new String[tcount];
				for (int i = 0; i < tcount; i++) {
					_tels[i] = c.getString(Contact.TEL, i);
				}
				perInfo.put(Contact.TEL, _tels);

				// E-mail
				if (c.countValues(Contact.EMAIL) > 0) {
					perInfo.put(Contact.EMAIL, c.getString(Contact.EMAIL, 0));
				}

				// 添加联系人信息
				_ownContactList.put(Integer.parseInt(uid), perInfo);

				// 添加联系人条目
				add(new ContactListNode(name.toString(), uid, false));
			}

		} catch (PIMException a) {

			a.printStackTrace();
		} catch (IndexOutOfBoundsException a) {

			a.printStackTrace();
		}
                // 显示联系人
		this.addMenuItem(viewItem);
	}

	// 查看联系人信息
	private MenuItem viewItem = new MenuItem("查看联系人信息", 100, 10) {
		public void run() {
			int uid = getUID(this);

			// 联系人详细信息
			StringBuffer inform = new StringBuffer();

			inform.append("姓名:");
			inform.append(((ContackListMap) _ownContactList.get(uid))
					.get(Contact.NAME));
			inform.append('\n');

			// 联系人电话
			inform.append("电话:\n");
			_tels = (String[]) ((ContackListMap) (_ownContactList.get(uid)))
					.get(Contact.TEL);
			int _tlength = _tels.length;
			for (int i = 0; i < _tlength; i++) {
				inform.append(_tels[i]);
				inform.append('\n');
			}

			// E-mail
			inform.append("E-mail:\n");
			inform.append(((ContackListMap) _ownContactList.get(uid))
					.get(Contact.EMAIL));

			Dialog.inform(inform.toString());
			inform = null;
		}
	};

	private int getUID(MenuItem mi) {

		ContactListNode pnb = (ContactListNode) mi.getTarget();
		return Integer.parseInt(pnb.getUid());
	}
}
 

 

 

分享到:
评论
1 楼 michael_wang 2010-01-26  
试一下

相关推荐

    用j2me写的电话簿程序,利用rms存储联系人信息

    本文将深入探讨如何使用J2ME编写一个简单的电话簿程序,并重点讲解如何利用Record Management System (RMS)来持久化存储联系人信息。 首先,J2ME是Java平台的一个子集,主要设计用于嵌入式系统和移动设备,如手机和...

    J2ME 中文api以及应用 J2ME 中文api以及应用.rar

    - 存储数据,使用RecordStore管理本地数据,或使用PIM API处理个人信息管理(如日历、联系人)。 - 利用多媒体API播放音频、显示图片,甚至创建简单的动画效果。 - 进行设备间的通信,如通过JSR-82实现蓝牙连接。 - ...

    J2ME中文输入Demo

    在J2ME中,开发人员需要处理资源有限的环境,因此,提供中文输入功能是一个挑战,因为这需要在小型设备上实现复杂的字符编码和输入法。 本"J2ME中文输入Demo"旨在为开发者展示如何在J2ME环境中实现基本的中文输入...

    J2ME开发 J2ME开发 J2ME开发

    2. **MIDP (Mobile Information Device Profile)**:MIDP是J2ME中最常见的框架,用于开发移动应用程序,包括用户界面组件和网络通信功能。 3. **CLDC (Connected Limited Device Configuration)**:这是J2ME的基础...

    j2me 中文教程 开发环境 J2ME语言

    本教程首先介绍了 j2me 开发体系,然后深入各个MIDP2.0 API,最后是搭建平台的知识。 第一章 “J2ME 技术概述”让你在学习J2ME 以前知道什么是J2ME。本章介绍了J2ME 平 台的体系结构和MIDlet 生命周期的概念。为以后...

    j2me 文档 开发 官方 中文

    Java 2 Micro Edition(J2ME)是Java平台的一个子集,主要用于开发在小型设备上运行的应用程序,如移动电话、智能手表、嵌入式系统等。这份"j2me 文档 开发 官方 中文"是针对J2ME开发者的重要资源,它提供了官方的...

    J2ME中文版教程 J2ME教程

    4. **MIDP API详解**:MIDP是J2ME中用于创建移动应用的核心API,教程会详细介绍如何使用Canvas、Form、Item等组件进行用户界面设计,以及怎样利用 MIDP的网络功能实现数据通信。 5. **图形与多媒体**:J2ME支持丰富...

    J2ME中文教程,J2ME手机程序开发

    本教程将深入讲解J2ME在手机程序开发中的应用,帮助开发者掌握这一核心技术。 ### J2ME技术概述 J2ME由两大部分构成:配置(Configurations)和框架(Profiles)。配置定义了运行时环境的基本特性,如内存大小和...

    j2me_plane.rar_j2me_j2me 飞机_j2me 飞机 游戏_飞机游戏

    在飞机游戏中,我们可能会用到MIDP(Mobile Information Device Profile)配置,它是J2ME中最常见的手机应用开发平台,提供了用户界面组件、网络连接等功能。同时,CLDC(Connected Limited Device Configuration)...

    j2me api中文文档

    j2me api中文档适合于手机游戏开发的人员

    J2ME中文教程

    在J2ME中,RecordStore是用于存储非结构化数据的主要机制。开发者可以创建、读取、更新和删除RecordStore中的记录。此外,FileConnection API允许开发者访问设备的文件系统,进行文件的读写操作。 **游戏开发** ...

    BlackBerry J2ME 编程指南

    作为BlackBerry开发策略的重要组成部分,J2ME在BlackBerry设备的应用中占据极其重要的地位。 本指南旨在从J2ME编程的具体角度出发,通过与标准J2SE的比较,结合BlackBerry开发平台上的J2ME编程特点,为广大的...

    J2ME中文教程.pdf

    J2ME中文教程 不错的学习资料,刚开始学习的可以参考下!

    j2me游戏中文教程

    《J2ME游戏开发中文教程》是一本专为Java ME(J2ME)平台上的游戏开发而设计的详细指南。J2ME,全称为Java 2 Micro Edition...通过深入研究这个教程,开发者将能够创建出吸引人的、能在多种J2ME支持设备上运行的游戏。

    J2ME API 2.0 J2ME使用手册 J2ME帮助文档

    "midpng-javadoc-final"这个文件名可能指的是MIDP PNG图像处理相关的API文档,对于理解如何在J2ME环境中处理图像和图形操作至关重要。通过深入学习和实践,开发者能够熟练掌握J2ME API,构建出高效且用户体验良好的...

    j2me 中文api (html)

    在深入探讨J2ME中文API(HTML)的相关知识点前,我们先来了解一下J2ME的基本概念及其在移动设备开发中的重要性。J2ME,即Java 2 Platform, Micro Edition,是Sun Microsystems(现已被Oracle收购)推出的一种适用于...

    Tank_J2ME.rar_j2me

    【标题】"Tank_J2ME.rar_j2me" 指的是一个关于J2ME(Java 2 Micro Edition)平台的项目,其中包含了实现“塔克大战”游戏的源代码和资源文件。...对于想要学习J2ME游戏开发的人来说,这是一个宝贵的实践资源。

    j2me游戏.rar

    J2ME应用通常打包为JAR(Java Archive)文件和jad(Java Application Descriptor)文件,jad文件包含了应用的元数据,如版本信息和依赖关系。然后,这些文件可以通过WAP或者OTA(Over The Air)方式分发到移动设备上...

Global site tag (gtag.js) - Google Analytics