BlackBerry应用程序开发者指南(高级).doc_第1页
BlackBerry应用程序开发者指南(高级).doc_第2页
BlackBerry应用程序开发者指南(高级).doc_第3页
BlackBerry应用程序开发者指南(高级).doc_第4页
BlackBerry应用程序开发者指南(高级).doc_第5页
已阅读5页,还剩303页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章使用受控API1第2章集成消息9第3章集成PIM功能29第4章增加设备选项72第5章 BlackBerry浏览器79第6章 访问电话应用程序139第7章 与BlackBerry应用程序通信148第8章 存储持久数据155第9章 备份和恢复持久数据182第10章 访问安装和配置信息201第11章 管理通知(Notification)203第11章 管理通知(Notification)230第12章 管理应用程序257第13章 应用程序间共享运行时对象265第14章 增加对智能卡(smart card)的支持268第1章 使用受控APIBlackBerry 受控API代码签名BlackBerry 受控API在本指南中描述的BlackBerry API访问受限制.使用了受限API的应用程序可以在模拟器上运行.尽管这样,在你可以将这些应用程序加载到BlackBerry设备之前,你必须从RIM(Reseach In Motion)获得代码签名.参看8页的”代码签名”以获得更多信息.BlackBerry API 包描述net.rim.blackberry.api.browser此包允许应用程序可以调用BlackBerry浏览器,为了得到更多信息,参看51页的”在浏览器中显示内容”。net.rim.blackberry.api.invoke此包允许应用程序调用BlackBerry应用程序,如任务,消息,备忘以及电话。为了得到更多信息,参看83页的”启动BlackBerry应用程序”。net.rim.blackberry.api.mail此包允许应用程序和BlackBerry消息进行交互,发送,接收和打开消息为获得更多信息,.参看15页的”操作消息”.net.rim.blackberry.api.mail.event定义了消息事件以及监听者(Listener)接口来管理邮件事件。为了得到更多信息,参看15页的”邮件事件”. net.rim.blackberry.api.menuitem 允许你增加客户定制的菜单项到BlackBerry的应用程序中,例如地址本,日历以及消息。为了得到更多信息,参看84页的”增加菜单项到BlackBerry应用程序中”.net.rim.blackberry.api.options允许应用程序增加项到BlackBerry设备的选项中。为了得到更多信息,参看47页”增加选项”.net.rim.blackberry.api.pdap允许应用程序和BlackBerry个人信息管理(PIM)交互,PIM包括地址本,任务,日历。MIDP包javax.microedition.pim提供了大部分类似的功能。为了得到更多信息,参看 25页的”PIM API”.net.rim.blackberry.api.phone提供了访问电话程序的高级特性。为了得到更多信息,参看 77页的”Phone API”.net.rim.blackberry.api.phone.phonelogs提供了访问电话呼叫历史记录的功能。为了得到更多信息,参看79页的”访问和管理电话记录”.net.rim.device.api.browser.field允许程序在界面上显示浏览器的字段。为了得到更多信息,参看51页的”在一个浏览器field上显示web内容”.net.rim.device.api.browser.plugin允许程序增加附加MIME类型的支持到BlackBerry浏览器上。为了得到更多信息,参看66页的”支持附加的MIME类型”.net.rim.device.api.crypto.*这些包提供数据安全的能力,包括数据加密和加密,数字签名,数据认证,以及认证管理.为获得更多信息,参看”API 参考”.net.rim.device.api.io.http此包允许应用程序作为一个或多个URL的提供者注册BlackBerry浏览器.为获得更多信息,参看71页的”作为一个HTTP 过滤项注册”.net.rim.device.api.notification提供方法来触发事件的通知以及响应系统和程序的事件。为了得到更多信息,参看115页的”通知API”.net.rim.device.api.servicebook允许程序增加,删除,以及访问服务预定接口,为了得到更多信息,参看113页的”访问安装和配置信息”.net.rim.device.api.synchronization此包允许应用程序执行备份和恢复客户数据的操作.为了解更多信息,参看104页的”增加备份持久数据的支持”.net.rim.device.api.system此包提供了一些类,这些类支持一些功能,例如持久数据存储,交互吹通信(interprocess communication),SMS,使用数据报的网络连接,以及应用程序管理.l 为了解更多信息,参看129页的”应用程序管理器”.l 为了解更多信息,参看111页的”使用数据报连接”.l 为了解更多信息,参看89页的”存储持久数据”.代码签名在BlackBerry JDE中,因为安全和导出原因,RIM跟踪一些敏感API的使用.在API参考中,一个锁住的图标或者需要签名的文本,指明了敏感的类或方法.在文档中,对于一个包含签名方法的类,在页的顶部选择或清除SHOW Signed选项来查看或隐藏签名的方法.如果你在你的应用程序中使用签名的类和方法,那么在你将.cod文件加载到BlackBerry设备中之前,这些.cod文件必须数字化签名.注: 在接收代码签名之前为了测试你的代码,使用模拟器.为了部署到BlackBerry设备,代码必须签名签名工具和BlackBerry JDE一起安装,使用此工具为你的.cod文件请求合适的签名.注: 永远不要将你的实际的代码发给RIM.签名工具发送一个代码文件的SHA-1哈希,以至签名中心系统可以生成一个需要的签名.代码签名验证代码签名验证类型描述连接时(Linktime)验证当你加载一个签名.cod文件到BlackBerry设备时,VM将此.cod文件域API库连接,并且检验.cod文件是否需要签名.如果没有签名,VM停止连接,并且不再加载应用程序.运行时(Runtime)验证当用户在BlackBerry设备上使用应用程序时,如果应用程序调用了一个需要签名的方法时,VM验证应用程序是否包含必要的签名.如果签名没有提供,将会抛出一个ControlledAccessException异常,并且要求的操作也不会执行.为获得更多关于.csi文件的信息,参看10页的”注册代码签名”.为获得更多关于.csl和.cso文件的信息,参看11页的”请求代码签名”.代码签名请求过程1. 签名工具打开一个和签名认证系统的HTTP连接,发送一个请求.这个请求包括了.csl和.cso文件中代码的哈希.不会把实际的代码发送到RIM.2. 签名认证系统验证请求是否有效,并且将一个RIM私有键应用到每个.cod文件的哈希上,以创建一个签名.3. 签名认证系统返回签名给签名工具,并关闭HTTP连接.4. 签名工具将签名加到每个.cod文件中.当文件签名以后,每个.cod文件的Status栏显示Signed.如果有任何问题在签名请求中发生,Status栏显示Failed-See Details.当你的.cod文件签名之后,你可以将它们加载到BlackBerry设备中.为获得更多信息,参看”BlackBerry应用程序开发者指南 第二卷高级 第一卷-基础”.可选签名在没有.cso文件签名下,你可以将应用程序加载到BlackBerry设备上.如果它们对应的方法在运行时被调用,那么仅仅需要这些签名.当应用程序调用一个需要签名的方法时,VM验证应用程序是否有了这个认证.如果VM没有发现这些可选的签名,应用程序将会停止.签名限制存在着有几种情形,在这几种情形里,代码签名处理不会完成:客户参数签名认证管理员通过指定使用时间或者频率参数的限制,可以限制你访问签名.这些参数在你的.csi文件中有定义.当应用签名时注意这些可能的限制.参数定义# of Request本参数设置你可以使用指定.csi文件请求的次数.在使用了最大的请求次数之后,csi文件变为无效,并且你不可以再使用此文件请求签名.联系你的签名认证管理员应用另外一个.csi文件.因安全原因请求受限制,尽管如此, 签名认证管理员可以允许你请求无限次.Expiry Date本参数设置你的csi文件的过期日期.在你的.csi文件过期后,你不能再使用此文件请求签名. 联系你的签名认证管理员应用另外一个.csi文件.为了请求改变这些.csi参数, 联系你的签名认证管理员.丢失数据没有.csi文件,你不能请求任何代码签名.你的注册键在你的csi文件中存储. 如果签名工具不能找到此键,并通过此键处理你的请求,你的签名请求没有一个可以发送到签名认证系统.如果你的系统停止响应,并且你丢失了数据,甚至整个文件结构,你可能会发现你也失去了完成签名请求的能力.如果你丢失了,csi文件,签名工具不能和签名认证系统进行通信,如果你丢失了.csi文件,联系你的签名认证管理员,请求一个新的.为代码签名注册对于每台需要键的计算机,你需要一组独立的代码签名键.一旦这些键安装在一台计算机上,你不能重新安装或转移到其他的计算机上.为代码签名注册你必须有HTTP访问Internet的能力为代码签名注册.1. 为了激活你的帐户,完成在BlackBerry开发区里的注册表:/developers.2. 当你在一个来自RIM的email里接收到.csi文件时,将他们保存到计算机.3. 双击一个.csi文件如果一个对话框显示一个私有键不能找到,在继续之前完成下面的操作l 单击Yes创建一个新的值对文件.l 为你的私有键输入一个密码,重新输入确认此密码.l 单击OK.l 移动你的鼠标,为新的私有值对生成数据.4. 在Registration PIN域,输入签名请求表或者RIM提供的PIN值.5. 在Private Key Password域里,输入至少8个字符的密码.这就是你的私有密码,它保护你的私有键.注:保护好你的私有键密码. 如果你丢失了这个密码,你必须重新通过RIM注册.如果你的密码被偷了,立即联系RIM撤销你的键阻止其他人使用你的身份请求签名.6. 单击Register.7. 单击Exit. 修改你的私有键密码你必须有HTTP访问Internet的能力,以至你能修改你的私有键密码.1. 在BlackBerry JDE bin文件夹里,双击SignatureTool.jar.2. 在Old Password域里,输入你当前的私有键密码.3. 单击Verify.4. 输入和确认新密码.5. 单击OK.请求代码签名在IDE中请求一个代码签名1. 编译你的项目在IDE里的Build菜单里,单击Build All.IDE创建下列3个文件,它们放在和工程.jdp文件相同的目录下面,对于每个项目:文件扩展名 描述.cod文件 将加载到BlackBerry设备的已编译的项目.csl文件 需要的连接时签名列表.cso文件 如果应用程序调用受控API,可能在运行时需要的签名列表.2. 在Build菜单,单击Request signatures.警告: 如果你已经通过以前的SDK为代码签名注册了,在安装一个新的BlackBerry JDE版本之前,备份这些文件,它们在BlackBerry JDE bin目录下.l Sigtool.dbl Sigtool.csk 如果这些文件丢失,你必须通过RIM重新注册.3. 单击Add.4. 在Look In下拉列表里,单击.cod文件所在的目录.5. 单击一个.cod文件.6. 单击Open.7. 单击Request8. 输入私有键密码.9. 单击OK.在命令行强求签名1. 在命令行里,已到包含签名工具软件的目录.2. 输入下面的命令行java -jar SignatureTool.jar -a -c -C :在这里:-a 当你想程序自动请求签名时使用.-c 当你想程序在请求签名没有发生错误后关闭时使用.-C 当你想程序不考虑它的 成功时关闭时使用. 可以为一个(仅有一个).csi文件,或一个或多个.cod文件的名字.l .csi:.csi文件包含了客户注册信息以及客户允许应用的签名列表.你仅可以一次使用一个.csi文件.l .cod:.cod文件时编译的应用程序,在所以需要的签名到位后,它可以加载到BlackBerry设备.你可以传入你想要的.cod文件数.第2章 集成消息Mail API操作消息管理文件夹管理附件Mail APIBlackBerry 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类包含一些字段来存储完全许可的地址字符串,例如和显示名.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 WahlInboxProjectsIn ProgressCompletePersonal一个标准的分隔符在层次结果里独立每个文件夹,你可使用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事件类的基类.MainEvent来定义了一个抽象的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) / Perform action when messages added or removed in batch operation.增加一个监听者给文件夹为了监听一个文件夹事件,例如将一个消息加入到一个特定的文件夹,为你想接收新消息通知的文件夹获取Folder对象.将一个FoldListener实例加到此文件夹对象.Folder folders = store.list(Folder.INBOX);Folder inbox = folders0;inbox.addFolderListener(this);当文件夹事件发生时, 实现FolderListener.messagesAdded() 和FolderListener.messagesRemoved()完成操作.例如,你可实现这些方法维护任何引用你的应用程序必须指定的mail文件夹的一致性.void messagesAdded(FolderEvent e) / Perform processing on added messages.void messagesRemoved(FolderEvent e) / Perform processing on removed messages.接收一个消息的更多部分缺省的,发送一个消息的第一部分(一般约2KB)到BlackBerry设备上.调用消息体部分上的hasMore()判断在服务器上是否有更多的数据.调用moreRequestSent()判断是否一个获取更多数据的请求已经发出.调用more()请求一个消息的更多部分.if ( bp.hasMore() ) & (! bp.moreRequestSent() Transport.more(bp, true);more()的第二个参数时一个Boolean值,它指定了是否仅获取消息体部分的下一部分(false),或者获取所有剩下的部分(true).打开一个消息获取消息存储以及包含消息的文件夹:Store store = Session.waitForDefaultSession.getStore();Folder folder = Store.getFolder(SampleFolder);从文件夹获取消息对象.迭代数组,并获取信息,例如发送者,主题,显示给用户.Message msgs = folder.getMessages();当用户从列表中选择一个消息时,调用Message对象上的方法获取合适的字段以及消息体内容显示给用户.Message msg = msgs0; / Retrieve the first message.Address recipients = msg.getRecipients(Message.RecipientType.TO)Date sent = msg.getSentDate();Address from = msg.getFrom();String subject = msg.getSubject();Object o = msg.getContent();/ Verify that the message is not multipart.if ( o instanceof String ) String body = (String)o;/.注:调用一个消息上的getBodyText()方法作为一个String获取普通文本内容.如果消息不包含普通文本,方法将返回null.发送一个消息为了发送消息,使用一个Transport对象,它代表了消息传输协议.创建一个消息创建一个Message对象,并指定一个文件夹拷贝已发送的消息.Store store = Session.getDefaultInstance().getStore();Folder folders = store.list(Folder.SENT);Folder sentfolder = folders0;Message msg = new Message(sentfolder);指定接收者创建一个Address对象的数组,然后将每个地址加入到数组中.你的应用程序应该捕获一个AddressException异常,如果地址无效,它将会抛出:try toList0= new Address(, Aisha Wahl); catch(AddressException e) System.out.println(e.toString();增加接收者调用Message.addRecipients().将接收者类型(TO,CC,或BCC),以及地址数组作为参数提供给此方法.如果你的消息有多个接收者类型,每个只调用一次addRecipients()方法.msg.addRecipients(Message.RecipientType.TO, toList);指定一个发送者的姓名和internet消息地址调用setFrom(Address)Address from = new Address(, Scott McPherson);msg.setFrom(from);增加一个主题行调用setSubject(String).msg.setSubject(Test Message);指定消息内容调用setContent(String).一般的,你的应用程序从用户输入的文本域里获取内容.try msg.setContent(This is a test message.); catch(MessagingException e) System.out.println(e.getMessage();发送消息调用Transport.send(Message).try Transport.send(msg); catch(MessagingException e) System.out.println(e.getMessage();回复消息为了创建一个消息作为已存在消息的回复,调用Message.reply(Boolean).作为此方法的参数,指定true回复所有消息接收者,或设置false仅回复发送者.Store store = Session.waitForDefaultSession().getStore();Folder folders = store.list(INBOX);Folder inbox = folders0;Message messages = folder.getMessages();if( messages.length 0 ) Message msg = messages0;Message reply = msg.reply(true);Transport.send(reply);转发一个消息调用一个已存在Message对象的forward()方法.注:转发消息的主题行会自动设置为FW:.Message fwdmsg = msg.forward();增加接收者创建地址数组,然后调用addRecipients(int, Address).Address toList = new Address1;toList0= new Address(, Katie Laird);fwdmsg.addRecipients(Message.RecipientType.TO, toList);指定消息内容调用setContent(String).注:你不能编辑转化消息的文本, setContent()方法在转化的消息前增加文本.try fwdmsg.setContent(This is a forwarded message.); catch(MessagingException e) System.out.println(e.getMessage();发送消息调用Send(Message).try Transport.send(fwdmsg); catch(MessagingException e) System.out.println(e.getMessage();try Transport.send(fwdmsg); catch(MessagingException e) System.out.println(e.getMessage();代码实例例:BasicMail.java/* BasicMail.java* Copyright (C) 2001-2005 Research In Motion Limited.*/package com.rim.samples.docs.basicmail;import net.rim.blackberry.api.mail.*;import net.rim.blackberry.api.mail.event.*;import net.rim.device.api.system.*;public class BasicMail extends Application private Store store; static void main (String args) BasicMail app = new BasicMail(); app.enterEventDispatcher(); BasicMail() Store store = Session.getDefaultInstance().getStore(); Folder folders = store.list(Folder.SENT); Folder sentfolder = folders0; / Create message. Message msg = new Message(sentfolder); / Add TO Recipients. Address toList = new Address1; try toList0= new Address(“”, “Scott Tooke”); catch(AddressException e) System.out.println(e.toString(); try msg.addRecipients(Message.RecipientType.TO, toList); catch (MessagingException e) System.out.println(e.toString(); / Add CC Recipients. Address ccList = new Address1; try ccList0= new Address(“”, “Katie Laird”); catch(AddressException e) System.out.println(e.toString(); try msg.addRecipients(Message.RecipientType.CC, ccList); catch (MessagingException e) System.out.println(e.toString(); / Add the subject. msg.setSubject(“A Test Email”); / Add the message body. try msg.setContent(“This is a test message.”); catch(MessagingException e) / Handle messaging exceptions. / Send the message. try Transport.send(msg); catch(MessagingException e) System.out.println(e.getMessage(); System.out.println(“Email sent successfully.”); System.exit(0);管理文件夹为了列出,接收并搜索文件夹,在缺省Session上调用getStore()获取一个Store对象.Store store = Session.waitForDefaultSession().getStore();列出mailbox store的文件夹调用Store.List().Folder folders = store.list();根据类型获取文件夹数组调用List(int).把文件类型作为参数提供给此方法.Folder folders = store.list(INBOX);Folder inbox = folders0;搜索获取文件夹数组为了获取层次结构上符合指定查询字符串的所有文件夹,调用findFolder(String).Folder folders = store.findFolder(Inbox);findFolder(String).方法返回一个与指定字符串匹配的文件夹数组,或者如果匹配的文件夹没有找到,返回一个空的数组.根据名称获取一个文件夹调用getFolder(String).把文件夹的绝对路径作为参数.如果文件夹没有找到, FolderNotFoundException异常将抛出.Folder folder = store.getFolder(Mailbox - Aisha Wahl/Inbox/Projects);根据ID获取一个文件夹调用getID()获取文件夹ID,然后调用ID作为参数的getFolder()方法.Folder folders = store.list();long id = folders0.getId();Folder f2 = store.getFolder(id);归档(File)消息调用Folder对象的appendMessage(Message)方法.Message msg = new Message();/.Folder folder = store.getFolder(Inbox);folder.appendMessage(msg);管理附件Mail API 允许你在BlackBerry设备上打开一个进来的消息附件,并且可以创建一个发出去的附件.一个消息附件作为多部分消息的一个独立BodyPart对象表现.创建一个自定义的附件处理器AttachmentHandler接口的实现定义了一个自定义的附件处理器.注册接受的MIME类型supports(String)的实现注册一个附件处理器接受的附件的MIME类型.当BlackBerry设备接收到一个附件时,此方法被调用.public boolean supports(String contentType) return (contentType.toLowerCase().indexOf(contenttype) != -1 ? true : false);定义一个相关菜单项字符串在消息列表中,当用户选择一个附件时,menuString()的实现返回一个显示的菜单项字符串.public String menuString() return Custom Attachment Viewer;定义附件处理run()实现完成附件书库的合理处理,并将附件显示给用户.public void run(Message m, SupportedAttachmentPart p) / Perform processing on data.Screen view = new Screen();view.setTitle(new LabelField(Attachment Viewer);view.add(new RichTextField(new String(byte)p.getContent();注: 当在消息列表里选择相应的菜单项时,调用run()方法.注册一个附件处理器AttachmentHandlerManager类控制附件是如何在BlackBerry设备上处理的.当用户打开一个相关类型的附件时,为了使消息应用程序调用你的自定义附件,调用addAttachmentHandler()注册你的附件处理器.注:BES附件服务在接收附件时有第一优先级,第三方附件处理器不能覆盖缺省BlackBerry设备的行为,为获得更多信息,参看”BES维护和疑难解答指南”.AttachmentHandlerManager m = AttachmentHandlerManager.getInstance();CustomAttachmentHandler ah = new CustomAttachmentHandler();m.addAttachmentHandler(ah);获取附件SupportedAttachmentPart类代表了一个BlackBerry设备上对应查看器的附件.在BlackBerry设备上.,一个没有查看器的附件作为一个UnsupportedAttachmentPart表现.获取附件内容调用getContent().String s = new String(byte)p.getContent();获取附件信息SupportedAttachmentPart类提供多个方法获取附件信息.下面的例子调用getName()和getSize()获取附件名和大小.public void run(Message m, SupportedAttachmentPart p) .String name = p.getName();int size = p.getSize();发送一个带有附件的消息通过创建一个新的Multipart对象创建一个多部分信息.为了创建每个附件组件,创建一个SupportedAttachmentPart的对象,把Multipart作为它的父组件.为了将每个SupportedAttachmentPart增加给Multipart,调用对象上的addBodyPart(SupportedAttachmentPart).当你调用Message对象上的setContent(Multipart)时,家爱能改Multipart对象作为它的参数.MultiP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论