2009-12-28 26 views

Répondre

13

Pour envoyer 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); 
    } 
} 

Pour recevoir 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

Salut Ashraf e Pour obtenir de l'aide, vous pouvez fournir du code pour mettre à jour le message reçu à l'écran parce que j'ai essayé moi-même mais je ne pouvais pas être en mesure d'obtenir. – Kumar

+0

Que voulez-vous dire par "mettre à jour le message reçu"? Pouvez-vous expliquer cela en plus de détails? –

+0

Hey Ashraf je voudrais afficher les sms reçus sur l'écran. Comment faire? – Kumar

3

Il semble envoyer des SMS à partir d'un BlackBerry n'est pas toujours aussi simple que cela. Je pensais que je l'avais compris, mais cela n'a pas fonctionné lorsque l'utilisateur de BlackBerry était sur un CDMA network as opposed to GSM, que j'utilisais.

J'ai trouvé le solution here et l'ai adapté à cela. Différent de cet exemple est également le numéro de port, j'utilise le port 5016 as suggested on the Blackberry support forum et le 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); 
} 

Pour envoyer un message texte, vous appelleriez comme ceci:

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

(. Où est un numéro de téléphone 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); 
} 

Vous ne mettez le message ici ^^ (données!)

Questions connexes