操作系统  办公  实用知识  设计  开发  WEB开发  移动开发  数据库  软件工程  网管  安全  管理  信息化  答疑  渠道 

J2ME可选包——PIM介绍

2007-10-30 网友评论 0 条 点击进入论坛

  前几天听朋友说起移动那方面正在谈论关于PIM的问题,这是个比较前沿的技术了。忽然想起来以前曾经在sun的网站看到过一篇文章是讲述PIM的,于是今天把它大概介绍一下。

  PIM的意思是personal infomation management(个人信息管理),主要是针对用户的重要信息,例如通信录、提醒、日程等。PIM OP定义了一系列的API,提供了访问这些重要数据的方法和途径。有必要先谈一下什么是OP,OP的意思就是optional package(可选包),他并不能提供一个整套的运行环境比如MIDP。他是对MIDP的扩展同时需要设备的支持。因此他并不是通用的,在移植性上存在问题。

  在使用PIM OP之前我们必须判断它是否可用,方法很简单只是检查microedition.pim.version的属性值是不是null,例如:

  ...

  // Check that PIM Optional Package is available

  String v = System.getProperty( "microedition.pim.version" );

  if( v != null ){

  // PIMOP available

  } else {

  // PIMOP not available

  }

  ...

  你不能通过在代码中检查pim包是否可用来判断上述问题,因为pim是和设备实现相关的。PIM定义了三种信息类型,分别是Contact list,Event list , ToDo list,设备并一定要支持全部这三种类型,但是他至少要支持一种。

  所有的API都在javax.microedition.pim包里面,你要通过PIM.getInstance()方法来得到PIM类,然后你才可以调用openPIMList()方法得到上述的list.例如下面的代码:

  ...

  PIM singleton = PIM.getInstance();

  ContactList cl = null;

  try {

  cl = (ContactList)singleton.openPIMList(PIM.CONTACT_LIST,

  PIM.READ_ONLY );

  // use the contact list

  }

  catch( PIMException ){

  // no contact list available!

  }

  catch( SecurityException ){

  // the application is not allowed to access the list

  }

  ...

  值得一提的是SecurityException,为了安全只有可信任的MIDlets才可以访问这些数据。如果不是的话会抛出这个异常,这恰恰符合MIDP中的安全模式。在PIM list中的数据称作PIM Item,你可以把PIM list看作是容器,把pim item看作是实体。要想访问这些item可以通过如下代码:

  import java.microedition.pim.*;

  import java.util.*;

  ContactList list = ... // a contact list

  try {

  Enumeration enum = list.items();

  while( enum.hasMoreElements() ){

  Contact contact = (Contact) enum.nextElement();

  // do something with the contact

  }

  }

  catch( PIMException e ){

  // an error occurred

  }

  catch( SecurityException e ){

  // can't read this list

  }

  ...

  在PIM item中可用的字段跟设备实现是相关的,因此在使用某个字段的时候有必要调用它的isSupportedField来判断一下,PIM 规范中同样对字段中的基本数据类型进行了定义,例如在Contact里面的TEL字段就是String你通过getStri()方法来得到,生日字段就是long类型的通过getDate()来得到例如:

  ...

  Contact contact = ...;

  String tel = contact.getString( Contact.TEL, 0 );

  ...

  ...

  Contact contact = ...;

  long bday = contact.getDate( Contact.BIRTHDAY, 0 );

  ...

  在contact里面包括多个字段,通过后面的index你可以访问他们。

已有 0 位对此文章感兴趣的网友发布了看法    
我来评两句 登录邮箱: 密码:
  匿名发表
今日推荐
技术文库(共有 46430 篇文章)
操作系统
办公软件
实用知识
网络管理
软件开发
WEB开发
软件工程
数据库
设计在线
信息安全
行业信息化
管理信息化
重点推荐
电子杂志订阅
点击电子杂志名称查看样刊
输入E-mail地址即可订阅
E-mail