2014-11-21 1 views
8

Я использую следующий код для отправки sms из dongle. Его отправки Sucessfullly. Теперь я хочу читать SIM смс или непрочитанные SMS с ключом так Plaese может любой сказать мне, как читать, чтоКак читать SMS от sim в ключах с помощью JAVA

Ниже приведен код для отправки смс

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); 

Существует InboundMessage класс, который принимает три параметра sunch в качестве шлюза, MemoryIndexNumber, SimMemoryLocation который я не могу получить так оно возвращает нуль

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

Если есть другой способ чтения смс с SIM от ключа.

ответ

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

+0

Во-первых спасибо теперь я в состоянии прочитайте сообщения, но notifiaction не работает, я сделал то же самое, что вы сказали, но я не получаю никакого результата, когда получаю sms, пожалуйста, можете ли вы рассказать мне, как снова. Я сделал следующий путь: это правильно SerialModemGateway gateway = новый SerialModemGateway ("", portname, 9600, "InterCEL", ""); gateway.setInbound (true); Service.getInstance(). SetInboundMessageNotification (новый SMSInNotification()); \t \t Service.getInstance(). AddGateway (gateway); \t \t Service.getInstance(). StartService(); – pareshm

+0

Я удалил свой собственный код обработки из этого класса уведомлений, который я опубликовал. Так что ничего не выйдет. Вы сами добавили код обработки? – Phil

+0

Я уточнил свой ответ, чтобы уточнить, что я имею в виду. – Phil