在blackberry中实现OutboundMessageListener时出错?

时间:2013-07-15 16:36:04

标签: java blackberry java-me blackberry-eclipse-plugin

使用此代码时使用OutboundMessageListenerMessageListener时出错:

public class MainClass extends UiApplication implements OutboundMessageListener,MessageListener
{
    public static void main(String[] args)
    {
        MainClass mainClass = new MainClass();
        mainClass.enterEventDispatcher();
    }

    public MainClass()
    {
        try
        {
            MessageConnection _mc = (MessageConnection)Connector.open("sms://");
            _mc.setMessageListener(this);
        }
        catch (IOException e)
        {
        }
        UiApplication.getUiApplication().pushScreen(new SmsCountScreen());
    }

    public void notifyIncomingMessage(MessageConnection conn)
    {
        UiApplication.getUiApplication().invokeAndWait(new Runnable()
        {
            public void run()
            {
                Dialog dialog = new Dialog(Dialog.D_OK, "Message Received!", 0, null,    Dialog.FIELD_HCENTER);
                Ui.getUiEngine().pushGlobalScreen(dialog, 1, UiEngine.GLOBAL_MODAL);
            }
        });
    }

    public void notifyOutgoingMessage(Message message)
    {
        UiApplication.getUiApplication().invokeAndWait(new Runnable()
        {
            public void run()
            {
                Dialog dialog = new Dialog(Dialog.D_OK, "Message Sent!", 0, null, Dialog.FIELD_HCENTER);
                Ui.getUiEngine().pushGlobalScreen(dialog, 1, UiEngine.GLOBAL_MODAL);
            }
        });
    }
}

使用此代码并获取错误

  

IOException:客户端连接上不允许操作

请帮忙解决这个问题?

1 个答案:

答案 0 :(得分:1)

查看this example on the BlackBerry support forums,他们使用此代码:

public class MyMessageListener implements OutboundMessageListener
{
    public void notifyOutgoingMessage(javax.wireless.messaging.Message m)
    {
        try {
            String msg = null;
            msg = getMessage(m); // my call to convert Message to String
            //... process msg
        }
        catch(Exception ex) {
            // handle exception
        }
    }

    public void notifyIncomingMessage(MessageConnection conn) 
    {
        // handle received sms here
    }
}

注册监听器

MyMessageListener ml = new MyMessageListener();
MessageConnection mc;
try {
    mc = (MessageConnection)Connector.open("sms://:0");
    mc.setMessageListener(el);
} catch (Exception e) {
    // handle exception
}

请注意,端口Connection.open()网址中指定。我还建议在真实设备上测试,而不是模拟器。