如何将MIDlet应用移植到BlackBerry(三)

作者: 邓明轩、王恒进、王志刚

 

 

通过应用图标 醒用

 

 

除了使 使 变应 如下 图为

 

 

开发 AP I 改图 有新

 

 

修改 n et .rim .b la ck berry .a pi .ho m e s cr ee n. Ho m eSc re en

的静态方 up da t eIc o n 可以 参数为一 Bitm ap 片。 下面 码片

Bitmap icon=Bitmap. getBitmapResource ( " cn/searb/test/unread.gif" );

net.rim.blackberry.api.homescreen.HomeScreen. updateIcon (icon);

 

 

网络连接调整

 

 

Bla ck Be rr y 使 j2 m e 标准法实 Ht t p 连接 So ck et MI Dl et 中的 网络 Bla ck Be rry 台上 然而 Bla ck Ber ry 多的 网络选择 可以 使 用的 接更 加符 择。

因为 Bla ck B er r y 支持 j2 m e ja v a x.m ic r o e dit io n. io . Co nn ect o r 实现 更多 Bla c kBer ry   平台   Co nn ect o r     o p en   U RL   ,开 发人   U RL   面加 上一 不同 接。 句在 U RL 了“ d ev ic e s id e= f als e BE S   MD S 连接 络:   Co nn ect o r .o pe n( h t t p://w ww .m y s er v er .co m ; d ev ic e s id e= f als e”) ;

需要 情况以参 AP I ja v a x.m ic r o e dit io n. io . Co nn ect o r 的说

下面 从整   Bla c kBe rry

 

B l ac kB erry   En t e rprise   S e rv er(B ES) 方式

 

 

这种使   BE S     Bla c kBe rry   MDS   S e r vic e s   Bla ck B er ry   MD S S er vic e s 览器 并负 莓手 连接

( Ht t pCo nn ect io n) Co nn ect o r . o pen("h t t p://www . t e s t s er ve r .c o m" ) ;

以上 Bla c kBe rry MD S S e rvice s 它的 默认 中, 要确序使 us e s B la ck Be rry MDS S e r vic e s 为它 U RL 参数 de vice s id e= f alse 这也 如下:

( Ht t pCo nn ect io n) Co nn ect o r . o pen( h t t p:/ /www . t e s t s er v e r .c om ; de vice s id e= f alse) ;

   

B l ac kB erry Int er ne t S erv ie 方式

 

 

这种 的连 据不 进行加密 通过 使用 HT TP S

SS L 安全 入了 Bla ck Be rry All ia nc e P r og r am 第三 作伙 考: h t t p://na .b la ck be rry .c om / eng /p art ne r s / al li an ce.js p

 

Di r ect T CP 方式

 

 

这种 使用 B la ck Be rry M DS 的黑 上直接 T CP 连接 di r ec t T CP 方式手机 - -T CP /IP AP N 的用 码。

iD E N 黑莓 包括 6 5 1 0 7 51 0 7 5 2 0 7 10 0 i ), 不指 d e vice s id e 参数 接是 di r ect T CP 运行在 iD EN 络上 的其 不指 de vice s id e 参数连接 Bla ck Berr y MDS

如果连接 Bla ck Be rry M D S 不存也会 自动 di r ect T CP 因此 如果   di r ect   T C P   为黑莓 机的默认连接方 ,我们建   U R L  

de vice s id e=t ru e 数, 如下:

( St re am Co nn ect io n)Con n ect o r .o pen("so ck et : //t e s t s er v er : 60 0; d e vice s id e =t ru e") ;

 

 

 

 

W i -Fi

 

 

如果需要 W i -F i 创建 网络 程序 以在

U RL in t er f ac e =wifi 能实   W i -F i ,如

( St re am Co nn ect io n)Con nect o r .o pen( so ck et : / / t e s t s er v e r: 6 00 ; in t er f ac e =wi fi) ;

 

 

W AP 1.x

 

 

并不 都支持通 W AP 连接 创建 W AP

 

开发 联系 支持 W A P 网管 数。 以下个基 W AP 网关 进行 HT TP 的例

( Ht t pCo nn ect io n) Co nn ect o r . o pen("h t t p://w ap . g oog le.c om ; W AP G a t ew a yIP = 1 2 7 . 0 .0. 1 ; W AP G a t e w a yAP N= c ar rie r .c om . g pr s" ) ;

其中 W AP G a t ew a yIP   W A P G a t ew a yAP N 参数 必须 ; ”隔

以下   W AP 数列 运营 商提 数需

 

参数

描述

 

W apGa t eway I P

网关地址

 

W apGa t ewayAP N

AP N 的名称

 

W apGa t ewayPo r t

网关端口号 如果使用端 920 3 的话 会自动启 W i r e le s s T r an s po r t     La y e r     Se c u r it y         ( W TLS )     W apE n ab l e WT LS= f a ls e   参数。

 

W apSou rc e I P

W a p 务器的地址。

 

W apSou rc ePo r t

W a p 务器的端口

 

T u n ne lA u t hU s e r na me

AP N 的用户名,当网关 Pa ss wo r d Au t hen t ic a t io n P r o t o c o l

( P AP )       Cha lleng e   H an d s ha k e   A p p lic a t io n   P r o t o c o l

( CHAP )   时才需要 供。

 

T u n ne lA u t hPa ss wo r d

AP N 密码,当网关启用 P A P 者是 CHA P   时才需要 供。

 

W apEnab le W TL S

指定是否启用 W TL S 如果没 指定该参数 口号为 9203

时会自动应用 W TL S

 

 

 

 

W AP 2.0

 

 

如果 S e r vic e Boo k 上有 W AP 2 . 0 可以 AP N= <AP N Nam e > 的方法 指定统会 S er vic e Boo k 连接 同的 W AP 2 . 0 不同 关名 网关 能在不同的 营商环境出现连接问。有一个对通用的做是通过程遍历手机 上的 S er vic e Boo k W AP 2 . 0 U ID 因为 Bla ck Be rry 上可 RU L Co nn ect io nU ID =< G a t ew a yU ID> 的方

  S e r vic eBoo k      g et S B      S er vice    Boo k S er vic eBoo k fin dR ec o r ds B yCi d 找在 Cid 中带 WP T CP 的记 录。 里可能包 W ifi m m s 对应 要排 除这 使 是判 U id 查找 U id 带“ W i fi ”和 mms

代码 下:

ServiceBook sb = ServiceBook. getSB ();

ServiceRecord[] records = sb.findRecordsByCid( "WPTCP" ); String uid = null ;

 

for   ( int   i   = 0; i < records. length ;   i++) {

if (records[i].isValid() && !records[i].isDisabled()) {

if (records[i].getUid() != null

&& records[i].getUid().length() != 0) {

if ((records[i].getUid().toLowerCase().indexOf( "wifi" ) == -1)

&& (records[i].getUid().toLowerCase()

.indexOf( "mms" ) == -1)) {

uid = records[i].getUid();

break ;

}

}

}

}

 

 

if   (uid   != null )   {

// 在参数中 Co nn ec t io nU ID

Connector.open (_url + ";ConnectionUID=" + uid);

} else {

// 没找到 Wap 2.0 se r vi ce bo ok , 做其它 .

}

 

 

 

数据存储与共享

 

 

使 RM S 进行

 

 

j2 m e   R MS   储机 制, MI DP 持久 的、 ,叫 管理 ( RMS) MI D let   使 R MS   建一 由一 个唯 j a v a x.m ic r o e dit io n. rm s   中可 以找接口 RMS   行操 作, R ec o r dSt o r e R eco r dS t o r e 供了 打开 和更 也提供方法删除单个记录或者整个存储。这个包包 各种接口用于列举、排序和筛选   RMS 内容。

Bla ck Be rry 对标 j2 m e 持标 RMS 存储 开发人 员在 MI Dl et 使 用的 RMS 存储 接在 Bla ck B er r y

MI DP 1 . 0 时候 RM S 存储 它的 MI D let 用于 序之间 的数 MI DP 2 . 0 范给 RMS 个非 常有 MI Dl et 套件 和另 MI Dl et 记录 储。

共享 RMS 要两 个拥 消费 拥有 负责 建和 储, 立授 模式 诸为 共享 或者

指定 的访 模式 ”或 “不 消费 通过 字获 记录 访问 消费者 不能访 ,也 储。

一个共享   RMS 元组 ( MI Dl et 名字 )

l      提供   J AD 或者   m a ni f e s t 面的   MI Dl et - V endo r 值。

l      MI Dl et 名字   J AD   MI Dl et -nam e 的值

l      记录是一 1 3 2   大小 U ni c o de 建记 录存

为了 MI DP 2 . 0 ja v a x.m ic r o e dit io n. r m s 中添 法: 第一 已经 创建 设置

授权

s t a t ic     R ec o r dS t o r e     Op enR ec o r dS t o r e     ( St rin g     r ec o r d S t o r eN am e ,     boo le an     c re a t e,     i n t aut hmo de, boo le an w rit ab le ) ;

参数如下 :

l      r ec o r dS t o r eN am e   置记 录存

l      cre a t e 果为   t ru e 会强 创建

l      aut hmo de 授权 :   使 R eco r dS t o r e.A U TH MO D E_P RI V A TE   不允 许共享   使用 R ec o r dS t o r e . A U T HMO D E_A NY   允许 存在 这个 参数 略。

l      wr it e ab le ,如 果为 t ru e,   其他 MI Dl e t 套件 储, 如果 数会

 

第二 记录 储:

s t a t ic   R ec o r dS t o r e   o penR ec o r dS t o r e(   St rin g   r ec o r dS t o r eN am e,   St rin g   v endo r Nam e ,   St rin g

 

s ui t eN am e)

参数 下:

l      r ec o r dS t o r eN am e 打开 的共

l      v endo r Nam e 拥有   MI D let 件的   MI Dl et - V endo r 属性

l      s ui t eN am e 有者   MI Dl e t 套件 名字

仅当 置了 au t omo de A U TH M OD E_A NY 成功 记录 你不 写属 存储 写的 唯一 储写 获相 常。

J AD m an i f e s t M ID let -V er s io n 列表 有者 套件 在影 变共

 

第三 的属

V o id s et Mo de( in t aut hmo de, boo le an w rit ab le ) ;

参数 下:

l      aut hmo de   指定记录存 的新的授权模式 可以 置为   A U T HMO D E_P RI V A T E   或者

    A U TH MO DE_ AN Y

l      wr it ab le   信息 是否 写。

注意 能改变   aut hmo de     w rit ab le   法能 来查

如上所述 Bla ck Be rry 提供   j 2 m e 人员可以   Bla ck Be rry 台上使

RMS 和共

 

使 R u nT imeS t or e 进行存储

 

 

相对 R MS 繁琐 配置 Bla ck B er r y 提供了 R un T im eS t o r e   运行 时存 使用便

RunT im eSt o r e   级别提 了数据存储 式和共享 式,它提供 一个中间 域让 不同 任何 程序 访 储。

对于   RunT im eSt o r e 使用 需要 是:

l      对象 储或 换掉

l      运行 一无   ID 创建

l      任何 到运 储中

l      设备的时 Run t im eSt o r e 失。 下面 写入 :

class CreateStoreDemo extends UiApplication {

// 通过包 生成 唯一的长 ID

public static long STORE_ID   = 0x23ad23489a243L;

public CreateStoreDemo() {

String msg = S ha re d te xt f or a no th er a pp li ca ti on ; RuntimeStore st or e = RuntimeStore .getRuntimeStore(); try { store.put(S TORE_ID, msg);

} catch (Exception ex) {}

}

}


 

 

 

创建 相应   RunT im eSt o r e

class ReadStoreDemo extends UiApplication {

public ReadStoreD emo() {

RuntimeStore st ore = RuntimeStore.getRuntimeStore();

try {

//cast the r eturned object to a string

String msg = (String)store.get( CreateStoreDemo.STORE _ID);

} catch (E xc ep t io n ex ) {

//handle exc eption

}

}

}

 

 

 

 

 

 
 

 

 

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
  •  

     

    相关链接:

    如何将MIDlet 应用移植到BlackBerry (一)

    如何将MIDlet 应用移植到BlackBerry (二)

    如何将MIDlet 应用移植到BlackBerry (三)

    如何将MIDlet 应用移植到BlackBerry (四)

    你可能感兴趣的:(exception,网络,存储,BlackBerry,j2me,WAP)