8

次のコードを使用して、ドングルから SMS を送信しています。送信に成功しました。SIM の SMS または未読の SMS をドングルから読みたいので、読み方を教えてください。

以下は、SMSを送信するためのコードです

import org.smslib.OutboundMessage;
import org.smslib.Service;
import org.smslib.modem.SerialModemGateway; 

...

private  String port = "COM4";          // Modem Port.
private  int bitRate = 9600;            // This is also optional. Leave as it is.
private  String modemName = "ZTE";      // This is optional.
private  String modemPin = "0000";      // Pin code if any have assigned to the modem.
private  String SMSC = "+919822078000"; // Message Center Number ex. Mobitel

...

SerialModemGateway gateway = new SerialModemGateway("", port, 9600, "InterCEL", "");
Service.getInstance().addGateway(gateway);
Service.getInstance().startService();
// System.out.println("center number=" + gateway.getSmscNumber());
gateway.setSmscNumber(SMSC);
gateway.setOutbound(true); 

OutboundMessage o = new OutboundMessage(number, str);
gateway.sendMessage(o);

ゲートウェイ、MemoryIndexNumber、SimMemoryLocation などの 3 つのパラメーターを取得する InboundMessage クラスがあり、取得できないため、null を返します。

InboundMessage n=new InboundMessage()
gateway.readMessage(n);

ドングルのSIMからSMSを読み取る他の方法があれば。

4

1 に答える 1

6

現在SIMメモリにあるメッセージを読むには、次のようにします

ArrayList<InboundMessage> msgList = new ArrayList<InboundMessage>();
Service.getInstance().readMessages(msgList, InboundMessage.MessageClasses.ALL);
for (InboundMessage im : msgList) {

}

ただし、着信メッセージをライブで検出するには、org.smslib.IInboundMessageNotification を実装する必要があります。

例えば

import org.smslib.AGateway;
import org.smslib.IInboundMessageNotification;
import org.smslib.InboundMessage;
import org.smslib.Message.MessageTypes;

public class SMSInNotification implements IInboundMessageNotification
{   
    public void process(AGateway gateway, MessageTypes msgType, InboundMessage msg)
    {
        switch (msgType)
        {
            case INBOUND:
                System.out.println(">>> New Inbound message detected from " + "+" + msg.getOriginator() + " " + msg.getText());
                break;
            case STATUSREPORT:

                break;
        }
    }
}

次に、これらを .startService() でサービスを開始する行の前に実行します

gateway.setInbound(true);
Service.getInstance().setInboundMessageNotification(new SMSInNotification());

詳細については、github のドキュメントを 参照してください https://github.com/smslib/smslib-v3/tree/master/doc

于 2014-11-25T14:47:43.113 に答える