如何将MIDlet应用移植到BlackBerry(三)
2010-09-13 23:22
225 查看
作者: 邓明轩、王恒进、王志刚
通过应用图标
提醒用
户
除了使
用主
屏幕
标记
以后
,
开发
人员
还可
以使
用改
变应用
图标
的方
式提
醒用
户。
假
如下
图为正
常的
应用
图标
:
开发人
员可
以通
过
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
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
(四)
通过应用图标
提醒用
户
除了使
用主
屏幕
标记
以后
,
开发
人员
还可
以使
用改
变应用
图标
的方
式提
醒用
户。
假
如下
图为正
常的
应用
图标
:
开发人
员可
以通
过
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 。 |
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 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
(四)
相关文章推荐
- 如何将MIDlet应用移植到BlackBerry(一)
- 如何将MIDlet应用移植到BlackBerry(二)
- 如何将MIDlet应用移植到BlackBerry(四)
- 如何快速把安卓应用移植到BlackBerry 10上
- 一个J2ME的应用移植到BlackBerry上,如何处理按键响应(以及如何映射左右软键)
- 如何快速把安卓应用移植到BlackBerry 10上
- 如何将Android应用移植到BlackBerry PlayBook上。
- 如何根据在BlackBerry应用中使用String pattern
- Qt应用如何移植到Windows CE系统上
- 问题:如何qDebug自己开发的运行在BlackBerry 10的Work Space中的企业应用呢?
- iPhone5来了,如何移植之前的原生应用和cocos2d游戏
- FT5X06 如何应用在10寸电容屏(linux-3.5电容屏驱动简析&移植10寸电容屏驱动到Android4.2) (by liukun321咕唧咕唧)
- iOS: 分步演示如何将iPhone应用移植至iPad平台
- J2ME MIDlet开发人员的第一个BlackBerry应用
- [视频]微软展示如何轻松移植iOS/Android应用到Win10上
- 开发者分步演示如何将iPhone应用移植至iPad平台
- FT5X06 如何应用在10寸电容屏(linux-3.5电容屏驱动简析&移植10寸电容屏驱动到Android4.2) (by liukun321咕唧咕唧)
- BlackBerry 应用和 MIDlet 之间的交互
- 如何把iOS 应用移植到Android?
- 如何从你的BlackBerry应用中启动浏览器