BlackBerry 应用程序开发者指南 第二卷:高级–第3章 集成PIM功能
3
第3章 集成PIM功能
PIM API
使用地址本
使用任务
使用日历
PIM API
Java个人信息管理(Personal Information Manager,PIM) API(javax.microedition.pim)以及BlackBerry PDAP(Personal Digital Assistant Profile) API(net.rim.blackberry.api.pdap)允许你访问BlackBerry设备上的日历,任务,以及地址本. 注:在4.0版本里,net.rom.blackberry.api.pim包是不赞成使用的. 现在这个包里的类在javax.microedition.pim and net.rim.blackberry.api.pdap里可以得到.
PIM类是一个抽象类,它提供了访问BlackBerry设备上的PIM数据的方法.
获取一个PIM对象
调用PIM.getInstance().
注:当你的应用程序第一次访问PIM API时,它将检查一个ControlledAccessException.如果系统管理员使用应用程序控制限制访问PIM API,一个运行时异常将会抛出.为获取更多信息,参看”BlackBerry应用程序开发者指南 第2卷:高级 第一卷:基础”.
PIM列表
PIM列的接口代表了所有联系人,事件以及任务列的常用功能.一个列包含0个或多个项,它们是PIMItem的子类.使用PIM列组织相关项,并且获取一些或所有列表的项. 注:在BlackBerry设备里,每个ContactList,ToDoList或EventList实例都会涉及到BlackBerry设备上的本地数据库.第三方应用程序不能创建自定义的列表.
PIM项
PIMItem接口代表了一个列项常用的功能.Contact,Event,以及ToDo接口扩展了PIMItem.一个PIM项代表了单个入口的数据集合,例如一个约会或者一个联系人.
当你在一个指定的PIM列表上创建一个PIM项时,自从它存在开始,此项仍保留了和列表的关联.你也可以使用标准的格式,例如iCal和vCard,导入或导出PIM项里的数据.
字段
一个PIM项在字段里存储数据.每个PIMItem接口-Contact,Event,或ToDo-为每个支持的字段定义了唯一的ID.例如,Contact接口定义字段来存储一个internet消息地址(EMAIL),姓名(FORMATTED_NAME),以及电话号码(TEL).
在你试图设置或获取字段值之前,调用PIMList.isSupportedField(int)来确认是否支持方法.
一个字段可能有一个与之关联的具有描述性的标签显示给用户.为获取这个字段的标签,调用PIMList.getFieldLabel(int).
每个字段都有一个数据类型ID,例如INT,BINARY,DATE,BOOLEAN,或STRING.为了得到一个字段的数据类行,调用PIMList.getFieldDataType(int).
数据类型决定了你将使用哪一个方法得到或设置字段数据.例如:
如果字段的数据类型为STRING,为了加入一个值,调用PIMItem.addString(String).
为了改变已经存在的值,调用PIM.setString(String).
为了获取一个字段值,调用PIMItem.getString().
监听者
当列表里的一个项发生变化时,你的PIMListListener接口实现会收到这个通知. PIMListListener接口提供了下面的方法:
方法
描述
itemAdded(PIMItem)
当加入一个项到列表时调用.
item.Removed(PIMItem)
当从列表里删除时调用.
itemUpdated(PIMItem,PIMItem)
当一个项发生变化时调用.
ContactList cl = (ContactList)PIM.getInstance().openPIMList(PIM.CONTACT_LIST, PIM.WRITE_ONLY);
((BlackBerryPIMList)cl).addListener(
new PIMListListener() {
public void itemAdded(PIMItem item) {
System.out.println(" ITEM ADDED: " + [...]
Confach发表于 April 28, 2008 12:20 pm | 留言(1) |文档
BlackBerry 应用程序开发者指南 第二卷:高级–第2章 集成消息
2
第2章 集成消息
Mail API
操作消息
管理文件夹
管理附件
Mail API
BlackBerry Mail API在net.rim.blackberry.api.mail和net.rim.blackberry.mail.event中.
Mail API类
BlackBerry Mail API在net.rim.blackberry.api.mail和net.rim.blackberry.mail.event包中.它允许应用程序使用消息应用程序发送,接收和访问消息..
注:BlackBerry mail API提供访问消息列表里的消息的能力,但不能访问其他类型的消息,例如短消息,PIN消息,或者电话呼叫记录.为了访问电话呼叫记录,使用电话呼叫记录的API(net.rim.blackberry.phonelogs).为得到更多信息,参卡79也的”访问和管理电话记录”.
当你的应用程序首先访问mail API时,检查一个NoClassDefFoundEorror!.如果系统管理员使用程序控制限制访问mail API,此错误将抛出.为获得更多信息,参看BlackBerry应用程序开发者指南第二卷:高级 第一卷:基础的16页的”应用程序控制”
类
描述
Session
本类为消息操作表现了一个抽象模型.它提供访问消息服务,存储,以及传输的能力.应用程序获取一个新的Session对发送或接收消息..
Store
本类模型化BlackBerry设备的底层消息存储.为了获得一个Store实例,调用Session实例.
Transport
本类代表了消息传输协议.
消息
一个Message对象包含了一组属性,例如主题(subject),发送者(sender),接收者(recipients),以及消息体(它的内容).为获取更多消息,参看14页的”多部分消息”.
下面的类和接口定义了支持的属性:
类或接口
描述
Address
本类代表了一个消息,ftp,http,或来自于(from),回复(reply to),接收属性以及消息体里的wap地址.Address类包含一些字段来存储完全许可的地址字符串,例如aisha.wahl@blackberry.com和显示名.
Header
本类定义了支持的消息头字段,例如 TO,FROM,以及DATE.
Message.Flag
本接口定义了消息标记,例如MOVED,OPENED,或SAVED.
Message.Icons
本接口定义了多种状态图标的字符串表现形式,例如一个已发送消息的检查标记.
Message.RecipientType
本接口定义了支持的接收类型,例如TO,CC或BCC.
Message.Status
本接口为发送和接收消息定义了状态选项,例如RX_RECEIVED,EX_ERROR,TX_SENT,以及TX_READ.
多部分消息(Multipart messages)
Mail API支持多部分消息.Multipart抽象类为一个或多个BodyPart对象提供一个容器.Multipart提供获取和设置其子部分的方法.
每个BodyPart由消息头字段(属性)以及内容(消息体).Mail API提供四个BodyPart的实现.
类
描述
ContactAttachmentPart
本类代表了一个地址卡(address card)附件部分.使用javax.microedition.pim.Contact接口.为获得更多信息,参看27页的”使用地址本”.
TextBodyPart
本类代表了一个内容的消息体,此内容为text/plain类型.你可使用本类创建text/plain部分的多部分消息.
UnsupportedAttachmentPart
本类代表了一个不支持的附件部分.你不能实例化此类.内容类型一直为application/octet-stream.
SupportedAttachmentPart
本垒代表了一个支持的附件部分,对于此,在BlackBerry设备上由一个已注册的附件处理器.
消息存储
Folder类代表了一个本地邮件箱文件夹.定义了多种文件夹类型,包括INBOX,OUTBOX,SENT以及OTHER.你可以使用这些文件夹类型为获取或保存消息获取文件夹.
Store类模型化BlackBerry设备的底层消息存储,并提供方法查找和获取文件夹.文件夹以层次存在,正如下面例子中的描述一样:
Mailbox – Aisha Wahl
Inbox
Projects
In Progress
Complete
Personal
一个标准的分隔符在层次结果里独立每个文件夹,你可使用getSeperator()来得到它.你也可以列出Store对象里的所有文件夹,列出文件夹下的子文件夹,或者基于查询字符串查找一个文件夹.
Folder类定义了一些方法获取消息,或子文件夹,以及保存和删除消息.
注:多个Folder实例可以引用相同的BlackBerry设备文件夹.这样,你可以一直调用相同Folder对象的addFolderListener()以及removeFolderListener().使用Folder.equals()判断是否2个Folder对象引用了相同的folder.
Mail事件
BlackBerry mail事件包(net.rim.blackberry.api.mail.event)定义了下面的消息事件以及每个事件的监听者:
事件
描述
FolderEvent
当文件夹里的一个消息增加或删除时此事件触发.
MessageEvent
当一个消息改变(消息体,消息头,或标记)时此事件触发.
StoreEvent
当一个消息以批处理(例如,当BlackBerry和桌面同步时)的形式加入到消息Store里,或从消息Store里删除,此事件触发.
MailEvent类是这些mail事件类的基类.它定义了一个抽象的dispatch()方法,为每个事件调用合适的监听者方法.
EventListener接口为FolderListener和MessageListener接口提供一个通用接口.
监听者
可用对象
FolderListener
可以将此类型加入到Folder或Store对象中.
MessageListener
可以将此类型加入到Message对象中.
StoreListener
可以将此类型加入到Store对象中.
操作消息
接收消息通知
FolderListener和StoreListener接口的实现允许你的应用程序接收消息通知.
public class MailTest implements FolderListener, StoreListener { … }
增加一个监听者到消息Store
为了监听消息存储事件,例如同步,获取一个Store对象,并将一个StoreListener实例加给它.
try {
Store store = Session.waitForDefaultSession().getStore();
}
catch (NoSuchServiceException e) {
System.out.println(e.toString());
}
store.addStoreListener(this);
当消息以批处理的形式增加和删除时,StoreListener.batchOperation()的实现定义了应用程序的行为.例如,你的应用程序可能检查任何它引用的对象是否删除.
void batchOperation(StoreEvent e)
{
// [...]
Confach发表于 April 28, 2008 12:15 pm | 留言 |文档
最新留言
- 高超:还有我按照http://www.52blackberry.com/thread-291671-1-1.html这个网站的方法实验过,还是不可以,不知道哪里做的不对
- 高超:说实话我没有看懂说的是什么,但是我很想像楼主那样使用SB的应用,我想楼主详细的告诉我应该怎么操作才能使用。谢谢 另:我没有使用移动的SB,那又点贵,不知道楼主的方法是不是需要移动推入,我使用的是blackberry的8520,支持WIFI 等待回复谢谢
- nio:ESS和MDS设置完毕之后,还是无法接收邮件,请较如下: MDS设置中的 Email.userId是写邮箱登陆用户名? Email.address需要修改么? Email.personal需要修改么? ESS设置中的 Email.personal跟MDS中的Email.personal有关系吗? Email.address跟MDS中的Email.address有关系吗? 以上两项应该设置成什么? ps:我用的是126的邮箱,用本地的outlook没有问题~
- 涂鸦:姜还是老的辣。
- Kirsten30MG:A lot of professors demand to examine the writing technique, hence, people have to choose dissertation service to buy free dissertation. In such way people show academic level. And as well you should get thesis.
