BlackBerry 应用和 MIDlet 之间的交互

作者: 王志刚

 

 

  RM S M I Dl e t B l ac kB er ry 之间共享数据

 

对于很 没有 Bla c kBerr y 应用经 的开 者,或者 对于很 现有的 J 2M E 系统, 果以 小的代 价和 Bla ck Berr y 应用交互 ,或者和 Bla ckB erry 应用 集成, 是一 很好的方 法。同 ,这 是对

老的 J 2 M E Bla c kBe rry 的新 用迁 和同 数据的 个好 法。 Bla ckB erry 开发对

J 2M E 供支 ,所以 RM S 可以被用 作为 决的首

 

原来的 M ID P 定义 持久的 基于 录的存储 功能叫 录管 (R M S ) 。一个 M IDl et 件可 以使用 R M S 一个 多个记 存储 每个由一 个独一 二的 字标

jav ax. m icr o edi ti o n .r m s 中可以 到必 的类和接 Rec o rd St o re 提供 打开, 闭, 取,写 入和更 操作 也提供方 法删除 个记 或者整个 存储。 个包 含接口来 列举, 序和

RM S

 

M I D P 1 .0 候, R M S 存储 属于 建它的 M IDle t M I D P 2 .0 范给 R M S 包增 了一 个非常 用的 力:它允 许一个 M IDl et 一个 M I D let 套件 录存储。

 

如何共享

 

 

共享一个 RM S 录存 需要两 或者 个参与者 :一个 有者 一个或者 多个消 者。 有者负 责创建 命名 储和建立 授权模 - 共享 者不 - 和它 访问 - 或者不 写。 过名字 得记 存储的访 。消 者不 访问没有 共享的 储, 不能修改 不可写 存储。 一个共 R M S 被一 三元组 ( 者名 M IDl et 件名 ,记 存储名 )

 

提供 名字是 J A D m an ife st M IDle t -Vend o r 属性的值

 

M IDl et 件名 JA D 里面 M IDle t -n am e 字段的值

 

记录 储名 是一个 1 3 2 的区 大小 Un ico d e 字符 ,是 你创建 录存 时候用 的名字。

 

要支持 M ID P2 . 0 准在 jav ax.m i cro edi tio n .r m s 加了 个字段和 三个方法 第一个 方法 开一个已 经存在 记录 储,或者 创建一 新的 录存储并 设置它 授权 可写 特性。

s tatic Rec o rd St o re

Op enRec o rd St o re (Strin g rec o rd Sto r eNam e, b oo l ea n creat e, in t au th m o d e, b oo le an writ ab le);

参数如 :

reco rd St o reN a m e 置记 录存储 名字 s et s the na m e o f the r ecor d st o re. create , true ,创 并不存 的存 .

au thmo d e 定授 模式 s p ecifies the auth o riz atio n mo d e: Rec o rd St o re.A UTH M O D E_ P RIV ATE

o r Re c o rd St o re.A U THM OD E_AN Y 许共享 . 如果 存储已 存在 个参数会 被忽 .

writeab le , true , 定其他 M IDl et 修改这 记录 . 存储已 存在 个参 被忽略 .


消费者 开一 共享的记 录存储 方法 下: 这里:

 

·     reco rd St o reN a m e 是要 开的共 记录 储的

·     v end o rN am e 有者 M I D let 件的 M IDl et -Ven d o r 属性的值

·     sui te N am e 有者 M IDl et 的名字

 

仅当记 存储 拥有者设 置了 au t o m o d e AU TH M OD E_AN Y 时这 方法 能成功 开记 存储。 需要注 的是 不能直接 检测存 的可 属性。要 发现一 记录 储是否可 写的唯 方法 试着 向记录 储写 ,如果不 可写就 获相 的异

记住在 JA D 或者 m an ifest M IDle t -Versi o n 参数列 中。 意味着拥 有者套 无法 影响消 费者的 提下 变共享的 存储的 录格

最后一 新方 如下:

vo id

s et Mo d e ( in t au th m o d e, b oo le an w rit ab le ) ;

这里 :

au thmo d e 定记 的新的 权模式 specifi es the n ew autho riz atio n m o d e o f t h e

AU THMO D E_ P RIV AT E AU THM OD E _AN Y.

writabl e 指定 储的信息 可写模式 specifi es t h e st o r e's new w ritab l e mo d e.

只有拥 M I D let 才能改变 au thm o d e wr itab le 属性 . 方法能够 用来查 这些

 

总结:

 

 

在原有 M I D let 中创建使 用了 R M S ,在 Bla ck Berr y 中直接打 开就可 操作 ,反 也是。

 

 

 

 

  使用全局事件来 行应用 交互

 

 

Bla ckBe rr y 提供了事 件模型 用来 不同的应 用之间 信, 使用事件 模型的 候需 注意 如下事

 

·     任何应 程序 可以发布 或者监 全局

·     通过 应全 事件可以 在一个 用程 中执行一 些本来 该在 一个应用 中出现 动作

·     通过发 全局 件也可以 在应用 序之 传递

 

局事件

 

对于全 事件 定义, Bl ackBerr y 己的

 

·     定义一个 I D 变量

·     ID 定义 静态 ,从而使 得其 的类也可 以引用到

·     通对包 H AS H 产生 ID ,使 ID 得独 无二


示例代 如下

class Glo b al Ev entFi ring Ap p e xt end s UiApp li catio n {

/ / ID w il l be hash o f pac kage na m e

pub li c stati c lo n g GLOB AL_ID = 0 xba4b 8 4 9 4 4 bb 74 29 e L ;

 

个全 事件

 

通过把 ID 递到 p o s tGlo b alE v ent () 法中 我们可 发布 个全局事

Bla ckBe rr y 了有四种 不同的 法来 布一 个事件 示例代 如下

 

 

/ / p o st t h e gl o b al ev en fr o m y o u r app li cati o n aft er s o m et h in g

/ / m eaning fu l ha s happ e n ed

App li ca tio n M an ag er.g et App li catio n M an ag e r()

.p o stGl o b alEv ent(G L OBAL_ ID) ;

/ /o r a po st p assin g o the r in fo r m ati o n

App li ca tio n M an ag er.g et App li catio n m an ag er()

.p o stG o lb alEv ent(G L OBAL_ ID,data0 ,d ata1 ,o b j ect 0 ,o b j ect 1 );

 

对于事 接受 来说,需 要考虑 实现 关键点如

 

·     全局监 应用 序必须要 是一个 动启 应用

·     监听程 需要 类能够实 现一个 Gl o b alE v ent L isten e r 接口

·     监听程 需要 Glob al Ev ent L ist ener 实例

 

示例代码如下:

 

class Gl o b alEv entL is te n erA p p e xt end s UiApp li catio n i m p le m ents             Glob alE ve n tL i ste n e r {

pub li c Glob alEv entL i ste n er App () {

add Glob alE v en tL ist ener(t h is);

 

对于 Gl o b alEv entL is te n er 接口, 说应 需要注意 的是, 须要 现具体事 件影响 方法 示例 代码如

Glob alE v entL i ste n e r 只有一 必须 实现的方 不管事 怎么 布的,这 个方法 是一

 

 

 

// thi s m et h o d is ex ecu te d when a gl o b al e v ent has be en po st ed pub li c vo id ev entOc cur ed(l o n g gu id , int data 0 , int da t 1 ,

Object o b je ct0 , Ob je ct o b je ct1 ) {

/ / che ck the I D o f t h e po st in g app

if (gu id = = Gl o b alE v entFi ri ng App .GLOBAL_ ID ) {

/ / d o som et h in g m eaning fu l here

/ / v ari ab les that w ere passed in can b e u sed d epen d in g

/ /o n w h at po st o ccurr e d .  O ther wise the v alu e will be nu ll

}


}

 

 

 

 

 

   使 R UNT IM E S t or e 来应用交互

 

相对于 态的 R M S 琐配置 不灵 Bla ckB erry 供的 行时 run tim e sto re 非常灵 活和方便 ,它 平台即被 提供了 下功

 

·     运行时 储提 一个中间 区域让 用应 可以共享 对象

·     通过数 签名 任何应用 程序都 以访 运行时存

 

对于运 时存储 存储 使 用需 注意的是

 

·     对象可 添加 运行时存 储或者 运行 存储中替 换掉

·     运行时 储必 以一个独 一无二的 I D 创建

·     任何类 的对 都可以放 到运行 存储中

 

这里是 建运 时存储和 写入简 数据 代码

class Crea te St o re D e m o e xt end s UiApp li catio n {

/ / cr eate t h e ID bas ed o n p ackage na m e

pub li c sta tic l o n g STOR E_I D = 0 x 23 ad 2 3 4 8 9 a 2 4 3 L ;

pub li c Crea te St o re D e m o ( ) {

Strin g m sg = Sh ared te xt f o r ano ther app li ca tio n ; Run ti m eSt o re st o re = R un tim eSt o re.g e tRun ti m eSt o re() ; try {

st o re.pu t(ST ORE_ I D , m sg );

} ca tch (E xce p tio n ex ) {}

}

}

创建好 以后 这里就是 读取运 时候 储的代码 示例

class Re ad Sto r eD em o ex te nd s UiApp li catio n {

pub li c ReadS t o r eD em o () {

Run ti m eSt o re st o re = R un tim eSt o re.g e tRun ti m eSt o re() ;

try {

/ / cast t h e return ed o b ject to a st rin g

S trin g m sg = ( S tring )st o re.g et (Crea te St o re D e m o . STORE_ I D ) ;

} ca tch (E xce p tio n ex ) {

/ / h and le e xce p ti o n

}

}

}

 

 

 

 
 

 

 

BlackBerry SDK下载

 

  • BlackBerry Java Plug-in for Eclipse v1.1
  • Java Plug-in for Eclipse Update Site
  • BlackBerry Web Plug-in v2.0
  • BlackBerry Widget SDK v1.0
  • BlackBerry Theme Studio v5.0
  • Plazmic Content Developer’s Kit v4.7
  • BlackBerry smartphone simulators
  • 你可能感兴趣的:(exception,object,存储,authorization,BlackBerry,j2me)