2009-12-28 21 views

Respuesta

13

Para enviar un 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); 
    } 
} 

para recibir un 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

Hola Ashraf th Gracias por su ayuda, puede proporcionar un código para actualizar el mensaje recibido en la pantalla porque lo intenté pero no pude lograrlo. – Kumar

+0

¿Qué quiere decir con "actualizar el mensaje recibido"? ¿Puede explicar esto con más detalle? –

+0

Hey Ashraf me gustaría mostrar los sms recibidos en la pantalla. ¿Cómo hacer esto? – Kumar

3

Parece envío de SMS desde un BlackBerry no siempre es tan sencillo. Pensé que lo tenía resuelto, pero no funcionó cuando el usuario de BlackBerry estaba en un CDMA network as opposed to GSM, que estaba usando.

Encontré solution here y lo adapté a esto. A diferencia de ese ejemplo también es el número de puerto, yo uso el puerto 5016 as suggested on the Blackberry support forum y el 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); 
} 

Para enviar un mensaje de texto, que podría llamarse así:

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

(. Cuando es un número de teléfono de 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); 
} 

Usted no establecer el mensaje aquí ^^ (datos!)

Cuestiones relacionadas