专注于Blackberry

存档: April, 2008

BlackBerry 应用程序开发者指南 第二卷:高级–第10章 访问安装和配置信息

10
           第10章 访问安装和配置信息

服务定制API

服务定制API(Service Book API)
服务定制API(net.rim.device.api.servicebook)使应用程序可以和BlackBerry基础(infrastructure)进行交互.服务定制由服务记录组成,每个服务定义了一个在BlackBerry设备上有效的服务.
服务记录定义了通讯协议(WAP或IPPP),网关,以及配置信息,例如浏览器设置.

服务定制API功能

描述

管理MDS服务连接

浏览器应用程序API可以使用任何一个带有BrowserConfig 的UID的ServiceBook入口,连接到一个无线网络.例如, Browser类使用服务定制获取一个BrowserSession. Browser.getTransportUid()查询一个服务定制来获取和一个给定服务记录相关联的UID.

管理mail信息

允许应用程序指定一个频道, 它引用合适的服务记录并通过此频道发送一个email.例如,应用程序可以使用BES或一个BlackBerry Internet Service选择发送消息..为获取更多信息,参看12页的”Mail API”.

为了查看BlackBerry设备上的服务定制,单击选项下的Service Book.
ServiceBook类维护一个ServiceRecord对象的集合.每个ServiceRecord对象由一个唯一的ID(UID)和连接ID(CID)标识.

CID

描述

CMIME

CMIME(compressed multi-purpose mail extensions,压缩多意图邮件扩展) CID定义了消息连接

ALP

ALP(address lookup protocol,地址查询协议) CID为无线GAL(Global Address List,全局地址列表)查询定义连接.

IPPP

IPPP(IP Proxy Protocol)使用BlackBerry® MDS Services定义HTTP连接.

BrowserConfig

BrowserConfig(浏览器配置)CID定义BlackBerry和WAP浏览器连接.

Sync

数据同步(Sync) CID为无线数据同步定义连接.

WAP

WAP(wireless application protocol) CID定义了WAP网关连接.

CICAL

CICAL(compressed iCalendar,压缩的iCalendar)为无线日历同步定义连接.

 

服务记录

描述

Desktop [CMIME]

此服务记录包含了使用桌面发送消息需要的信息.,也包含了完成其他功能需要的消息,例如无线消息调解.

Desktop [ALP]

此服务记录包含了完成无线GAB(Global Address Book)查询所需要的信息.

Desktop [IPPP]

此服务记录包含了通过MDS服务使用并且浏览Internet所要的信息.

Desktop [CICAL]

此服务包含了进行无线日历操作所需要的信息.

Desktop [BrowserConfig]

此服务记录包含了BlackBerry浏览器的配置信息.

Web Client [CMIME]

此服务记录包含了发送消息需要的信息.,也包含了使用BlackBerry Internet Service.进行其他功能(例如无线消息调解)所需要的消息.

WAP Secure Transport [WAP]

此服务记录包含了连接到服务商WAP网关所需要的信息.

WAP Browser [BrowserConfig]

此服务记录包含了WAP浏览器的配置信息.

Desktop [Sync]

此服务记录包含了完成数据同步所需要的信息.

监听服务定制事件
GlobalEventListener接口(在net.rim.device.api.system 包里)的实现使应用程序可以监听服务定制事件. 当接收到一个全局事件时,GlobalEventListener.eventOccurred()的实现指定了进行的操作.
为了注册一个全局事件监听者,调用Application.addGlobalEventListener(GlobalEventListener).
ServiceBook类定义了下面的事件,它们由一个GUID标识.

GUID

描述

GUID_SB_ADDED

当增加一个服务定制时发送的全局事件的GUID.

GUID_SB_BR_END

当服务定制备份或恢复结束时发送的全局事件的GUID.

GUID_SB_BR_START

当服务定制备份或恢复开始时发送的全局事件的GUID.

GUID_SB_CHANGED

当一个服务定制改变时发送的全局事件的GUID.

GUID_SB_OTA_SWITCH

当所有服务记录因为一个移动的BES命令OTA而被插入时发送的全局事件的GUID.

GUID_SB_OTA_UPDATE

当OTA为一个UID更新所有服务记录时发送的全局事件的GUID.

GUID_SB_REMOVED

当删除一个服务定制时发送的全局事件的GUID.

Last Updated:2007年2月5日

继续阅读本文 →

  

Confach发表于 April 29, 2008 6:00 am | 留言 |文档 

BlackBerry 应用程序开发者指南 第二卷:高级–第9章 备份和恢复持久数据

9
            第9章 备份和恢复持久数据

同步API
增加备份持久数据的支持

同步API
在net.rim.device.api.synchronization包里的同步API可以使应用程序和BlackBerry桌面软件集成以完成2个任务:

将一个数据库备份到桌面文件,以后可以恢复它.
和桌面应用程序同步数据.

注::BlackBerry桌面软件需要备份的数据使用下面的格式:
Length<2> Type<1> Data<n>
为了验证数据是否有合适的格式,使用net.rim.device.api.synchronization.ConverterUtilities类里的任何一个写方法;
数据备份
桌面软件提供一个Backup and Restore工具,它允许用户将BlackBerry设备上的数据保存到桌面上的一个文件,并且使用此桌面文件将数据恢复到BlackBerry设备上.
当一个应用程序实现了同步API,桌面软件将应用程序数据库备份和恢复到其他的BlackBerry设备数据库.你也可以使用同步API创建数据备份(archives),或者当BlackBerry设备第一次连接到计算机时跳出应用程序数据库.
数据同步
桌面软件提供一个Intellisync的工具,此工具将BlackBerry设备和用户计算机上的应用程序同步.
当备份和恢复加载BlackBerry设备和一个桌面备份文件之间的数据时,同步比较桌面应用程序存在的数据和BlackBerry设备上的数据,然后合并这些数据..
为了和桌面应用程序进行数据同步,使用BlackBerry桌面API为桌面软件编写一个插件.BlackBerry JDE也包含了一个同步实例应用程序作为桌面的一个插件.  注:你存储数据进行备份的格式是没有限制的.唯一的要求就是应用程序应该使用桌面插件应用程序使用的格式进行读写数据.
同步API
实现下面同步API提供的接口:

接口

描述

SyncConverter

转化BlackBerry设备需要的SyncObject格式和桌面需要的序列化格式之间的数据.

SyncCollection

代表了一个应用程序同步对象的集合.

SyncObject

代表了一个可以备份和恢复到用户计算机的对象.

SerialSyncManager类可以访问同步管理器,特别的,它可以为同步注册新的对象  注:为了备份和恢复非常少的数据,例如应用程序设置选项,你可以扩展SyncItem类,并实现它的抽象方法. SyncItem类为你已经实现了SyncCollection, SyncConverter, 和 SyncObject接口.
增加备份持久数据的支持
为了支持备份,修改一个实现了Persistable接口的类,实现SyncObject接口.
修改应用程序的主类以实现SyncCollection和SyncConverter接口.  注: SyncCollection和SyncConverter接口可以由相同的类或者由单独的类实现,这决定于你的应用程序.下面的章节将解释如何再相同的类里实现这些接口.
定义一个唯一ID
定义一个_uid变量. getUID()的实现为同步操作返回一个唯一ID.
定义一个构造子
你的构造子的实现接受一个唯一ID作为参数,并且将之设置为_uid变量的值.  注:每一个存储在BlackBerry设备上的同步对象,必须有一个关联的ID,此ID对于它的应用程序来说必须是唯一的. UIDGenerator缺省的设置此ID值.
注册一个同步集合
在main()方法里,在同步管理器上注册你的SyncCollection., 当BlackBerry设备第一次启动时,创建一个独立的工程传入初始化参数.为获的更多的信息,参看108页的”当BlackBery设备启动时注册一个同步集合”.

public static void main(String[] args) {
    boolean startup = false;
    for (int i=0; i<args.length; ++i) {
       if (args[i].startsWith("init")) {
           startup [...]

继续阅读本文 →

  

Confach发表于 April 29, 2008 5:58 am | 留言 |新闻 

BlackBerry 应用程序开发者指南 第二卷:高级–第8章 存储持久数据

8
                  第8章 存储持久数据

持久数据选项
管理持久数据
内存管理以及持久对象
管理客户对象

持久数据选项
在BlackBerry设备上,以下面的方式可以存储数据:

使用MIDP记录存储.
使用BlackBerry持久存储模型.

如果你想让你的应用程序可以在多个与Java ME兼容的设备上运行,那么采用MIDP的实现.如果你编写应用程序仅仅为BlackBerry设备,使用BlackBerry持久存储模型,因为它提供了一个更为灵活有效的方式存储数据,
MIDP存储记录
javax.microedition.rms包提供了MIDP记录存储的实现.持久数据存储在RecordStore对象里.一个记录存储最大可以为64KB.
数据的离散单元称为记录.一个记录是一个字节数组,赋给它一个唯一标志数.
创建一个记录存储
调用openRecordStore().指定true来描述当记录存储不存在时应该创建此记录存储.

RecordStore store = RecordStore.openRecordStore("Contacts", true);

注:当从BlackBerry设备删除一个应用程序时,所有此应用程序创建的记录存储都会删除.每个在MIDlet包(suite)的记录存储都有一个唯一名.MIDlet仅可以访问一个在相同包里的由MIDlet创建的记录存储.
增加一个记录
调用addRecord().

int id = store.addRecord(_data.getBytes(), 0, data.length());

 
获取一个记录
调用getRecord(int, byte[], int).给本方法提供一个记录ID,字节数组,以及一个偏移作为参数.

byte[] data = new byte[store.getRecordSize(id)];
store.getRecord(id, data, 0);
String dataString = new String(data);

 
获取所有记录
打开存储,然后获取其迭代.

RecordStore store = RecordStore.openRecordStore("Contacts", false);
RecordEnumeration e = store.enumerateRecords(null, null, false);

enumerateRecords(RecordFilter filter, RecordComparator comparator, Boolean keepUpdated) 方法有如下参数:

参数

描述

filter

此参数指定一个RecordFilter对象获取记录存储结果的子集(如果为null,将返回所有记录存储).

comparator

此参数指定一个RecordComparator对象决定返回记录所在的顺序位置(如果为null.将返回无序的记录).

keepUpdated

此参数决定对于记录存储,迭代保持当前的改变.

BlackBerry持久存储
在MIDP中的记录存储(RecordStore)与BlackBerry持久模型(PersistentStore)有2处主要的区别.

特性

描述

数据存储

MIDP记录仅以字节数组存储数据.相比之下,BlackBerry API允许你在持久存储中保存任何对象.这样,查询存储数据就会比记录模型更快一些.为了存储一个自定义的对象类型,自定义类型的类必须要实现Persistable接口.

数据共享

在MIDP中,每个RecordStore属于单个MIDlet包,并且MIDlet也只能访问由相同包的MIDlet创建的记录存储.尽管如此,在BlackBerry持久模型中,数据可以在应用程序之间共享,在创建数据的离散应用程序中共享.代码签名指定只有被认证的应用程序才可以访问这些数据.

注:BlackBerry持久性API在手持设备软件3.6或后期版本可用.对于早期的版本,你必须使用MIDP记录存储.
保留存储空间
BlackBerry的存储空间是有限的.你应该小心设计你的程序,将需要存储持久数据的闪存数量最小化.
在一般的BlackBerry里,对于一个标准的BlackBerry应用程序,不需要的存储空间必须在所有应用程序之间共享,用来存储用户数据,包含日历约会,联系人,以及消息.
如果BlackBerry设备在一个小内存情况下操作,它有可能完成下面的动作释放内存空间:

从BlackBerry上删除以前的消息.
 从BlackBerry 设备上删除超过一个星期的日历约会(如果启动了无线日历同步).

如果因低内存而BlackBerry设备删除了消息或者日历约会,那么在桌面消息程不会删除数据.为获的更多信息,参看96页的”内存管理以及持久对象”.
   注:用户点击设备选项的Status可以查看当前可用的数据空间.
 
备份与恢复
在net.rim.device.api.synchronization包中,同步(synchronization)API允许你备份以及恢复BlackBerry设备上的持久数据.为获取更多信息,参看104页的”增加支持备份持久数据”.
 
安全
缺省的,BlackBerry上由RIM数字签名的应用程序可以访问持久存储上的数据,联系RIM获取关于控制数据访问的信息.
 
管理工具
在BES 3.5 Microsoft® Exchange SP2或 BES 2.2 [...]

继续阅读本文 →

  

Confach发表于 April 29, 2008 5:54 am | 留言 |文档 

上一页 · 下一页