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());
}
}
分享到:
相关推荐
本文将深入探讨如何使用J2ME编写一个简单的电话簿程序,并重点讲解如何利用Record Management System (RMS)来持久化存储联系人信息。 首先,J2ME是Java平台的一个子集,主要设计用于嵌入式系统和移动设备,如手机和...
- 存储数据,使用RecordStore管理本地数据,或使用PIM API处理个人信息管理(如日历、联系人)。 - 利用多媒体API播放音频、显示图片,甚至创建简单的动画效果。 - 进行设备间的通信,如通过JSR-82实现蓝牙连接。 - ...
在J2ME中,开发人员需要处理资源有限的环境,因此,提供中文输入功能是一个挑战,因为这需要在小型设备上实现复杂的字符编码和输入法。 本"J2ME中文输入Demo"旨在为开发者展示如何在J2ME环境中实现基本的中文输入...
2. **MIDP (Mobile Information Device Profile)**:MIDP是J2ME中最常见的框架,用于开发移动应用程序,包括用户界面组件和网络通信功能。 3. **CLDC (Connected Limited Device Configuration)**:这是J2ME的基础...
本教程首先介绍了 j2me 开发体系,然后深入各个MIDP2.0 API,最后是搭建平台的知识。 第一章 “J2ME 技术概述”让你在学习J2ME 以前知道什么是J2ME。本章介绍了J2ME 平 台的体系结构和MIDlet 生命周期的概念。为以后...
Java 2 Micro Edition(J2ME)是Java平台的一个子集,主要用于开发在小型设备上运行的应用程序,如移动电话、智能手表、嵌入式系统等。这份"j2me 文档 开发 官方 中文"是针对J2ME开发者的重要资源,它提供了官方的...
4. **MIDP API详解**:MIDP是J2ME中用于创建移动应用的核心API,教程会详细介绍如何使用Canvas、Form、Item等组件进行用户界面设计,以及怎样利用 MIDP的网络功能实现数据通信。 5. **图形与多媒体**:J2ME支持丰富...
本教程将深入讲解J2ME在手机程序开发中的应用,帮助开发者掌握这一核心技术。 ### J2ME技术概述 J2ME由两大部分构成:配置(Configurations)和框架(Profiles)。配置定义了运行时环境的基本特性,如内存大小和...
在飞机游戏中,我们可能会用到MIDP(Mobile Information Device Profile)配置,它是J2ME中最常见的手机应用开发平台,提供了用户界面组件、网络连接等功能。同时,CLDC(Connected Limited Device Configuration)...
j2me api中文档适合于手机游戏开发的人员
在J2ME中,RecordStore是用于存储非结构化数据的主要机制。开发者可以创建、读取、更新和删除RecordStore中的记录。此外,FileConnection API允许开发者访问设备的文件系统,进行文件的读写操作。 **游戏开发** ...
作为BlackBerry开发策略的重要组成部分,J2ME在BlackBerry设备的应用中占据极其重要的地位。 本指南旨在从J2ME编程的具体角度出发,通过与标准J2SE的比较,结合BlackBerry开发平台上的J2ME编程特点,为广大的...
J2ME中文教程 不错的学习资料,刚开始学习的可以参考下!
《J2ME游戏开发中文教程》是一本专为Java ME(J2ME)平台上的游戏开发而设计的详细指南。J2ME,全称为Java 2 Micro Edition...通过深入研究这个教程,开发者将能够创建出吸引人的、能在多种J2ME支持设备上运行的游戏。
"midpng-javadoc-final"这个文件名可能指的是MIDP PNG图像处理相关的API文档,对于理解如何在J2ME环境中处理图像和图形操作至关重要。通过深入学习和实践,开发者能够熟练掌握J2ME API,构建出高效且用户体验良好的...
在深入探讨J2ME中文API(HTML)的相关知识点前,我们先来了解一下J2ME的基本概念及其在移动设备开发中的重要性。J2ME,即Java 2 Platform, Micro Edition,是Sun Microsystems(现已被Oracle收购)推出的一种适用于...
【标题】"Tank_J2ME.rar_j2me" 指的是一个关于J2ME(Java 2 Micro Edition)平台的项目,其中包含了实现“塔克大战”游戏的源代码和资源文件。...对于想要学习J2ME游戏开发的人来说,这是一个宝贵的实践资源。
J2ME应用通常打包为JAR(Java Archive)文件和jad(Java Application Descriptor)文件,jad文件包含了应用的元数据,如版本信息和依赖关系。然后,这些文件可以通过WAP或者OTA(Over The Air)方式分发到移动设备上...