2014-11-21 15 views
8

Korzystam z poniższego kodu, aby wysłać sms z klucza sprzętowego. Wysyłane pomyślnie. Teraz chcę czytać sms SIM lub nieprzeczytane wiadomości SMS z kluczem tak plaese może ktoś mi powiedzieć jak czytać tenJak odczytać SMS-a z karty SIM za pomocą JAVA

Poniżej znajduje się kod, aby wysłać 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); 

Jest InboundMessage klasa, która trwa trzy parametry sunch jako brama, MemoryIndexNumber, SimMemoryLocation której jestem w stanie uzyskać tak zwraca null

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

Jeśli istnieje jakikolwiek inny sposób odczytać sms z karty SIM z kluczem sprzętowym.

Odpowiedz

6

Aby odczytać wiadomości aktualnie w pamięci karty SIM, można po prostu zrobić

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

} 

Ale żyją wykrywanie przychodzących wiadomości, trzeba wdrożyć org.smslib.IInboundMessageNotification

Np

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

Następnie uruchom je przed linią który uruchamia usługę z .startService()

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

można przeczytać więcej w dokumentacji na github https://github.com/smslib/smslib-v3/tree/master/doc

+0

pierwsze Dzięki teraz jestem w stanie przeczytać wiadomości, ale powiadomienie nie działa, zrobiłem to samo, myślę, że powiedziałeś, ale nie otrzymuję żadnych wyników, gdy otrzymuję sms. Czy możesz mi powiedzieć, jak to zrobić ponownie. Zrobiłem tak: SerialModemGateway gateway = new SerialModemGateway ("", nazwa portu, 9600, "InterCEL", ""); gateway.setInbound (true); Service.getInstance(). SetInboundMessageNotification (new SMSInNotification()); \t \t Service.getInstance(). AddGateway (brama); \t \t Service.getInstance(). StartService(); – pareshm

+0

Usunąłem mój własny kod obsługi z tej klasy powiadomień, którą napisałem. Więc nic nie wyświetli. Czy dodałeś sam kod obsługi? – Phil

+0

Zaktualizowałem swoją odpowiedź, aby było jaśniej, co mam na myśli. – Phil

Powiązane problemy