2

我正在尝试将 SMS 从 Android 发送到 J2ME 应用程序。

我遇到的问题是 J2ME 应用程序在特定端口上侦听传入的 SMS 消息,而我的 Android 应用程序无法将文本 SMS 发送到端口。

我试过 sendDataMessage 允许指定一个端口,但 J2ME 应用程序没有收到它。另外,我尝试将 //wma:port_number 添加到消息正文中(我在这里阅读过),将目标号码设置为 phone_number:port 形式,但均未成功。

此外,我无法更改 J2ME 应用程序,因为我没有它的源代码。

关于如何将 SMS 从 Android 应用程序发送到特定端口上的 J2ME 应用程序的任何想法?

4

1 回答 1

0

我已经有一段时间没有遇到同样的问题了,所以希望有人能提供比我更有用的回复。(那样就好了)。但是当我看到它时,我学到了:

JavaME 和 Android 之间的区别(关于 SMS 发送)在于 Android 允许您在标准端口上捕获传入的 SMS,而 JavaME 强制您使用任何其他端口。

从 Android发送的消息被标识为JavaME 平台上的sendTextMessage()一个实例。TextMessage但是由于您无法在 Android 上指定端口,因此它在标准端口上发送 - 您无法使用 JavaME 接收。

所以你当然要看sendDataMessage(),因为它可以让你指定一个端口号。问题是:从 Android 发送的消息,在 JavaME 平台上sendDataMessage()被识别为一个实例。BinaryMessage因此,侦听 a 的 JavaME 代码TextMessage永远不会触发,因为它BinaryMessage正在接收 a。

我能找到的唯一解决方案是BinaryMessage在收到 a 时添加一些代码。解码传入消息的方式略有不同,但做同样的事情。

遗憾的是,您无法执行此操作,因为您没有 JavaME 源代码,但它的外观如下:

String receivedSMS;

public void notifyIncomingMessage(MessageConnection conn) {
    try {
        Message msg = conn.receive();
        if (msg instanceof TextMessage) { // Message sent from J2ME device
            TextMessage tmsg = (TextMessage) msg;
            receivedSMS = tmsg.getPayloadText();
        } else if (msg instanceof BinaryMessage) { // Message sent from Android device
            BinaryMessage bmsg = (BinaryMessage)msg;
            byte[] ta = bmsg.getPayloadData();
            receivedSMS = new String(ta);
        }
    } catch (Exception e) {
    }
}

那是我当时能找到的唯一解决方案。如果有人有更好的,我也想知道。:-)

于 2012-10-19T10:49:05.217 回答