如何从Android应用程序向J2ME发送文本SMS?

时间:2012-10-18 20:56:54

标签: android java-me sms port

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

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

我尝试过sendDataMessage,允许指定端口,但J2ME应用程序不接收它。另外,我尝试将// wma:port_number添加到邮件正文(我已经读过它here),将目标号码设置为phone_number:port形式,但都没有成功。

另外,由于我没有源代码,因此无法更改J2ME应用程序。

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

1 个答案:

答案 0 :(得分:0)

因为我有同样的问题已经有一段时间了,所以希望有人比我更有用。 (那样就好了)。但这是我在看到它时学到的东西:

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

来自Android的sendTextMessage()发送的消息在JavaME平台上被标识为TextMessage的实例。但由于您无法在Android上指定端口,因此它将在标准端口上发送 - 您无法通过JavaME接收该端口。

因此,您可以查看sendDataMessage(),因为它允许您指定端口号。问题是:来自Android的sendDataMessage()发送的消息在JavaME平台上被标识为BinaryMessage的实例。因此,监听TextMessage的JavaME代码将永远不会触发,因为它正在接收BinaryMessage

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

可悲的是,你不能这样做,因为你写道你没有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) {
    }
}

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