Blackberry 接收推送通知时,后台应用程序无法显示UI

Blackberry 接收推送通知时,后台应用程序无法显示UI,blackberry,push-notification,listener,background-application,Blackberry,Push Notification,Listener,Background Application,这是我的完整推送通知侦听器 公共类MyApp扩展UiApplication{ 公共静态void main(字符串[]args){ PushAgent pa=新的PushAgent(); pa.enterEventDispatcher(); } } 这个类扩展正确吗 公共类PushAgent扩展应用程序{ 专用静态最终字符串PUSH_PORT=“32023”; 私有静态最终字符串BPAS_URL=”http://pushapi.eval.blackberry.com"; 专用静态最终字符串APP

这是我的完整推送通知侦听器

公共类MyApp扩展UiApplication{
公共静态void main(字符串[]args){
PushAgent pa=新的PushAgent();
pa.enterEventDispatcher();
}
}
这个类扩展正确吗

公共类PushAgent扩展应用程序{
专用静态最终字符串PUSH_PORT=“32023”;
私有静态最终字符串BPAS_URL=”http://pushapi.eval.blackberry.com";
专用静态最终字符串APP_ID=“2727-C55087ER3001RR475448I01321A2A56SHSS2”;
私有静态最终字符串连接_SUFFIX=“;deviceside=false;ConnectionType=mds public”;
公共静态最终长ID=0x749cb23a75c60e2dL;
私有MessageReadingThread MessageReadingThread;
公共事务代理人(){
如果(!CoverageInfo.isCoverageSufficient(CoverageInfo.COVERAGE_BIS_B)){
返回;
}
if(DeviceInfo.isSimulator()){
返回;
}
messageReadingThread=newmessagereadingthread();
messageReadingThread.start();
registerBpas();
}
私有静态类MessageReadingThread扩展线程{
私有布尔运行;
专用服务器套接字连接套接字;
专用HttpServerConnection连接;
私有输入流输入流;
私有PushInputStream PushInputStream;
public MessageReadingThread(){
这是真的;
}
公开募捐{
String url=“http://:”+推送端口+连接后缀;
试一试{
套接字=(ServerSocketConnection)连接器。打开(url);
}捕获(IOEX异常){
}
(跑步时){
试一试{
对象o=socket.acceptAndOpen();
conn=(HttpServerConnection)o;
inputStream=conn.openInputStream();
pushInputStream=新的MDSPushInputStream(conn,inputStream);
进程(pushInputStream,conn);
}捕获(例外e){
如果(正在运行){
运行=错误;
}
}最后{
关闭(conn,pushInputStream,null);
}
}
}
}
公共静态无效关闭(连接连接、输入流is、输出流os){
如果(os!=null){
试一试{
os.close();
}捕获(IOE异常){
}
}
如果(is!=null){
试一试{
is.close();
}捕获(IOE异常){
}
}
如果(conn!=null){
试一试{
康涅狄格州关闭();
}捕获(IOE异常){
}
}
}
私有字符串formRegisterRequest(字符串bpasUrl、字符串appId、,
字符串标记){
StringBuffer sb=新的StringBuffer(bpasUrl);
sb.附加(“/mss/PD_次区域?”);
sb.append(“serviceid=”).append(appId);
sb.append(“&osversion=”).append(DeviceInfo.getSoftwareVersion());
sb.append(“&model=”).append(DeviceInfo.getDeviceName());
if(token!=null&&token.length()>0){
某人追加(“&”)追加(代币);
}
使某人返回字符串();
}
私有无效寄存器bpas(){
最终字符串registerUrl=formRegisterRequest(BPAS\u URL,APP\u ID,null)
+连接后缀;
对象源=新对象(){
公共字符串toString(){
返回《东方日报》;
}
};
NotificationsManager.registerSource(ID、源、,
通知约束。重要);
新线程(){
公开募捐{
试一试{
HttpConnection HttpConnection=(HttpConnection)连接器
.打开(注册表URL);
InputStream=httpConnection.openInputStream();
字符串响应=新字符串(IOUtilities.streamToBytes(is));
关闭(httpConnection,is,null);
String nextUrl=formRegisterRequest(BPAS\u URL、应用程序ID、,
响应)+连接后缀;
HttpConnection nextHttpConnection=(HttpConnection)连接器
.公开(下一轮);
InputStream nextInputStream=nextHttpConnection
.openInputStream();
响应=新字符串(
IOUtilities.streamToBytes(nextInputStream));
关闭(nextHttpConnection,is,null);
}捕获(IOE异常){
}
}
}.start();
}
}
}
这是
过程

公共类PushMessageReader{
私有静态最终字符串消息\u ID\u HEADER=“推送消息ID”;
私有静态最终字符串消息\u TYPE\u TEXT=“TEXT”;
私有静态最终字符串消息\u TYPE\u IMAGE=“IMAGE”;
私有静态最终整型消息\u ID\u HISTORY\u LENGTH=10;
私有静态字符串[]messageIdHistory=新字符串[MESSAGE_ID_HISTORY_LENGTH];
私有静态字节历史索引;
专用静态字节[]缓冲区=新字节[15*1024];
私有静态字节[]imageBuffer=新字节[10*1024];
公共静态最终长ID=0x749cb23a75c60e2dL;
公共静态位图弹出窗口=Bitmap.getBitmapResource(“icon_24.png”);
私有PushMessageReader(){
}
公共静态无效流程(PushInputStream pis,连接连接){
试一试{
HttpServerConnectionHttpConn;
if(HttpServerConnection的连接实例){
httpConn=(HttpServerConnection)conn;
}否则{
抛出新的IllegalArgumentException(
无法处理非http推送,应为HttpServerConnection,但具有
+conn.getClass().getName());
}
字符串msgId=httpConn.getHeaderField(消息\u ID\u头);
字符串msgType=httpConn.getType();
字符串编码=httpConn.getEncoding();
如果(!已收到(msgId)){
字节[]二进制数据;
if(msgId==null){
msgId=String.valueOf(System.currentTimeMillis());
}
if(msgType.indexOf(消息类型文本)>=0){
int
UiApplication.getUiApplication().invokeLater(new Runnable() {
  public void run() {
    ui.pushGlobalScreen(screen, 1, UiEngine.GLOBAL_QUEUE);
  }
});