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中文教程.pdf J2me中文教程.pdf
J2ME开发 J2ME开发 J2ME开发 J2ME开发
j2me 文档 开发 官方 中文 j2me 文档 开发 官方 中文 j2me 文档 开发 官方 中文
J2ME 中文api以及应用 J2ME 中文api以及应用.rar
要补充,J2ME的开发在blackberry设备的应用中,也占据着极为重要的位置。 这篇文章,主要从J2ME的编程的具体角度来评估和衡量J2ME开发的具体方法,通过与标准J2SE的比较,结 合BlackBerry开发平台上的J2ME编程的特点...
J2ME API J2ME API J2ME API J2ME API J2ME API
J2ME开发中解析XML,J2ME开发中解析XML
j2me api中文档适合于手机游戏开发的人员
j2me中文教程
J2ME中文教程 J2ME中文教程
J2ME中文教程 不错的学习资料,刚开始学习的可以参考下!
J2ME游戏开发 J2ME游戏开发 J2ME游戏开发
J2ME培训教程,以前学JJ2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程2ME发的一个PPT,内容还可以,需要的朋友不要客气J2ME...
j2me入门教程j2me入门教程j2me入门教程j2me入门教程j2me入门教程
J2ME 中文教程
J2ME获得设备支持的信息 包括了是否支持CLDC的版本 , MIDP 的版本。 是否支持混音。内存,文件 ,rms 等的支持与否! 应该说把开发中所需要的信息都包括进去了! 使用: 下下来然后安装到手机上就可以检测你的...
J2ME中文API J2ME中文API帮助文档
在eclipse中怎样使用j2me 在eclipse中怎样使用j2me 在eclipse中怎样使用j2me
J2me中任意角度图片旋转 J2me中任意角度图片旋转
J2me学习的好帮手,详解,细节,自认为很有帮助,解密版,