在 Java ME 中使用 WMA 接收 SMS 消息

发布于 2024-11-18 11:32:00 字数 1530 浏览 4 评论 0原文

我正在尝试使用 WMA API 在 J2ME 中开发短信发送和接收测试应用程序。我有单独的线程用于发送和接收。

发送线程的运行方法 -

public void run() {
        try {

            MessageConnection connection = (MessageConnection) Connector.open("sms://+" + number + ":1234");
            BinaryMessage messageBody = (BinaryMessage) connection.newMessage(connection.BINARY_MESSAGE);
            messageBody.setPayloadData(message.getBytes());
            connection.send(messageBody);
            connection.close();


        } catch (IOException ex) {

        }
    } 

接收线程的运行方法

public void run() {
        try {
            while (true) {
                MessageConnection connection = (MessageConnection) Connector.open("sms://:1234");
                BinaryMessage messageBody = (BinaryMessage) connection.receive();
                message = new String(messageBody.getPayloadData());
                number = messageBody.getAddress();
                number = number.substring(6, 15);
                App.setDisplay(number, message);
                connection.close();
            }
        } catch (IOException ex) {
            ex.printStackTrace();

        }
    }

我正在 startApp() 中初始化接收线程,并在按下发送命令时初始化发送线程。我遇到的问题是,如果我使用两个模拟器,双方都无法发送消息。一个模拟器可以连续向另一个模拟器发送消息,但当另一个模拟器尝试发送消息时,却收不到消息。

当模拟器控制台收到消息时显示 -

[INFO] [sms ] ## javacall: SMS 正在发送...

当该行出现时,模拟器不会收到任何消息。我的代码问题出在哪里?

PS:我看到他们是一种使用侦听器来解决此问题的方法,即使用单独的线程进行接收,但我想知道上面的代码中问题出在哪里? 非常感谢任何帮助^^

I am trying to develop a sms sending and receiving test application in J2ME using the WMA API. I have separate threads for sending and receiving.

The Sending thread's run method -

public void run() {
        try {

            MessageConnection connection = (MessageConnection) Connector.open("sms://+" + number + ":1234");
            BinaryMessage messageBody = (BinaryMessage) connection.newMessage(connection.BINARY_MESSAGE);
            messageBody.setPayloadData(message.getBytes());
            connection.send(messageBody);
            connection.close();


        } catch (IOException ex) {

        }
    } 

The receiving thread's run method

public void run() {
        try {
            while (true) {
                MessageConnection connection = (MessageConnection) Connector.open("sms://:1234");
                BinaryMessage messageBody = (BinaryMessage) connection.receive();
                message = new String(messageBody.getPayloadData());
                number = messageBody.getAddress();
                number = number.substring(6, 15);
                App.setDisplay(number, message);
                connection.close();
            }
        } catch (IOException ex) {
            ex.printStackTrace();

        }
    }

I am initializing the receiving thread in the startApp() and initializing the sending thread when the send command is pressed. The problem I have is that if I use two Emulators, both sides can't send messages. One emulator can continuously send messages to the other but when the other emulator tries to send a message the message isn't received.

When a message is received by the emulator console shows -

[INFO] [sms ] ## javacall: SMS
sending...

when that line appears the emulator doesn't receive any messages. Where is the problem in my code?

PS: I saw that their is a way to use a listener to work around this problem with using a separate thread for receiving but I want to know where is the problem is in the above code?
Any help is really appreciated ^^

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

沒落の蓅哖 2024-11-25 11:32:00

如果您在模拟器中运行,请使用可用于发送或接收消息的 wma 控制台。您无法在模拟器之间进行操作。 wma 控制台位于
公用事业 -> WMA控制台

If you are running in emulator, use wma console available to send or receive messages. You can't do it from emulator to emulator. wma console is available at
utilities -> wma console

痴者 2024-11-25 11:32:00

我发现了问题...这是因为 SMS 在 Netbeans 以上版本中不起作用。它仅适用于 Netbeans 6.1 ...模拟器出现问题

I found the problem... It's because SMS doesn't work in Netbeans above versions. It only works in Netbeans 6.1 ... Something is wrong with the emulator

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文