利用J2ME怎样调用手机中的电话薄?
来源:互联网 发布:何时统一台湾 知乎 编辑:程序博客网 时间:2024/05/08 22:33
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);
- 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');
- }
- 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怎样调用手机中的电话薄?
- 如何读到手机中的电话薄
- J2ME电话薄源代码重新整理
- 调用电话薄打电话
- Android开发中之删除手机电话薄中的一条数据时之删除不成功的解决办法
- 电话薄
- J2ME手机开发中的透明图片处理
- 将电话薄导入到WM手机之中
- 手机问题询问 MT6227 电话薄导入
- 从Android手机电话薄中读取电话号码
- html5怎样调用手机摄像头或者相册
- 利用J2ME和servlet技术实现手机发送邮件
- 怎样调用mysqlcppconn中的escapeString
- 关于J2ME调用手机拍照的程序问题
- J2ME手机程序开发中的九大注意要点
- 索尼爱立信手机在 J2ME 程序中的字体大小
- J2ME手机程式研发中的九大注意要点
- 教你如何处理J2ME手机开发中的透明图片
- linux学习
- Session几秒就失效
- 精选58个免费英语原版书下载网站 [转]
- linux 学习 2
- 祝福!
- 利用J2ME怎样调用手机中的电话薄?
- wxString字符串编码转换
- Linux 下 Trac SVN apache SSL 配置安装以及整合
- Ant Plugin: java.net.SocketTimeoutException: Accept timed out Solution
- 一个完整的SQL SERVER数据库全文索引的示例
- 浅议VC程序中进程间信息交换方法
- How to increment version information after each build in Visual C++
- 虚拟串口工具-HV VSP
- Studying note of GCC-3.4.6 source (94)