2009-12-28 13 views

risposta

13

Per inviare uno SMS:

import net.rim.device.api.io.*; 
import net.rim.device.api.system.*; 
import javax.microedition.io.*; 
import java.util.*; 
import java.io.*; 
public class SendSms extends Application 
{ 
    private static final int MAX_PHONE_NUMBER_LENGTH = 32; 
    private String addr = "15191112222"; 
    private String msg = "This is a test message."; 
    private DatagramConnection _dc = null; 
    private static String _openString = "sms://"; 
    public static void main(String[] args) 
    { 
      new SendSms().enterEventDispatcher(); 
    } 
    public SendSms() 
    { 
      try { 
       _dc = (DatagramConnection)Connector.open(_openString); 
       byte[] data = msg.getBytes(); 
       Datagram d = _dc.newDatagram(_dc.getMaximumLength()); 
       d.setAddress("//" + addr); 
       _dc.send(d); 
      } catch (IOException e) {} 
      System.exit(0); 
    } 
} 

per ricevere uno sms:

import net.rim.device.api.io.*; 
import net.rim.device.api.system.*; 
import javax.microedition.io.*; 
import java.util.*; 
import java.io.*; 
public class ReceiveSms extends Application { 
    private ListeningThread _listener; 
    public static void main(String[] args) 
    { 
      new ReceiveSms().enterEventDispatcher(); 
    } 
    ReceiveSms() { 
      _listener = new ListeningThread(); 
      _listener.start(); 
    } 
    private class ListeningThread extends Thread 
    { 
      private boolean _stop = false; 
      private DatagramConnection _dc; 
      public synchronized void stop() 
      { 
       _stop = true; 
       try { 
        _dc.close(); 
       } catch (IOException e) { 
        System.err.println(e.toString()); 
       } 
      } 
      public void run() 
      { 
       try { 
        _dc = (DatagramConnection)Connector.open("sms://"); 
        for(;;) 
        { 
         if (_stop) { 
           return; 
         } 
         Datagram d = _dc.newDatagram(_dc.getMaximumLength()); 
         _dc.receive(d); 
         String address = new String(d.getData()); 
         String msg = new String(d.getData()); 
         System.out.println("Message received: " + msg); 
         System.out.println("From: " + address); 
         System.exit(0); 
        } 
       } catch (IOException e) { 
        System.err.println(e.toString()); 
       } 
      } 
    } 
} 
+0

Ciao Ashraf th anks for ur help può fornire il codice per aggiornare il messaggio ricevuto sullo schermo perché mi sono provato ma non sono riuscito a farlo. – Kumar

+0

Cosa intendi con "aggiornamento del messaggio ricevuto"? Puoi spiegarlo in dettaglio? –

+0

Hey Ashraf mi piacerebbe mostrare gli sms ricevuti nello schermo. Come fare? – Kumar

3

Sembra l'invio di SMS da un BlackBerry non è sempre così semplice. Pensavo di averlo capito, ma non funzionava quando l'utente BlackBerry era su un CDMA network as opposed to GSM, che stavo usando.

Ho trovato il solution here e l'ho adattato a questo. Diverso da tale esempio è anche il numero di porta, io uso la porta 5016 as suggested on the Blackberry support forum e la Blackberry knowledge center.

private static byte[] stringToByte(String s) 
{ 
    char[] sa = s.toCharArray(); 
    byte[] ba = new byte[sa.length]; 

    for (int i = 0; i < ba.length; i++) { 
     ba[i] = (byte) (sa[i] & 0xFF); 
    } 

    return ba; 
} 

private static void sendCDMAText(String nr, String message) throws IOException 
{ 
    DatagramConnection conn = (DatagramConnection) Connector.open("sms://+" + nr + ":5016"); 
    byte[] bytes = stringToByte(message); 
    Datagram msg = conn.newDatagram(bytes, bytes.length); 
    conn.send(msg); 

} 

private static void sendSMS(String nr, String message) throws IOException 
{ 
    MessageConnection conn = (MessageConnection) Connector.open("sms://" + nr); 
    TextMessage msg = (TextMessage) conn.newMessage(MessageConnection.TEXT_MESSAGE); 
    msg.setPayloadText(message); 
    conn.send(msg); 
} 

public static void sendTextMessage(String nr, String message) throws IllegalArgumentException, InterruptedIOException, NullPointerException, SecurityException, IOException 
{ 
    if (RadioInfo.getNetworkType() == RadioInfo.NETWORK_CDMA) { 
     sendCDMAText(nr, message); 
     return; 
    } 

    sendSMS(nr, message); 
} 

Per inviare un messaggio di testo, si dovrebbe chiamare in questo modo:

sendTextMessage("555123123", "The little text message you wanted to send."); 

(. Dove 555.123.123 è un numero di telefono di Hollywood)

1
public SendSms() 
{ 
     try { 
      _dc = (DatagramConnection)Connector.open(_openString); 
      byte[] data = msg.getBytes(); 
      Datagram d = _dc.newDatagram(_dc.getMaximumLength()); 
      d.setAddress("//" + addr); 
      _dc.send(d); 
     } catch (IOException e) {} 
     System.exit(0); 
} 

Tu non imposta il messaggio qui ^^ (dati!)