2010-06-16 7 views
1

hey j'ai fait beaucoup de recherche et trouvé des types de code similaires. J'ai essayé pour gsmenvoyer des sms à partir du fil de fond dans blackberry en utilisant j2me

méthode 1 donne IllegalArgumentException

try 
{ 
MessageConnection _mc = (MessageConnection)Connector.open("sms://"); 
TextMessage tm = (TextMessage) _mc.newMessage(MessageConnection.TEXT_MESSAGE); 
tm.setPayloadText(smsText); 
tm.setAddress("965xxxxxxx"); 
_mc.send(tm); 
_mc.close(); 
}catch(exception e){} 

Méthode 2: donne exception java.lang.Error

try 
    { 
    MessageConnection _mc = (MessageConnection)Connector.open("sms://"); 
    TextMessage tm = (TextMessage) _mc.newMessage(MessageConnection.TEXT_MESSAGE, 
"//9790XXXXXX"); 
    tm.setPayloadText(text); 
    _mc.send(tm); 
    _mc.close(); 
     }catch(Exception e){} 

Je pense que le problème est avec adresse i également essayé: mais pas de succès + 91965xxxxxxx, 0091965xxxxxxx, 0965xxxxxxx

Comment mon application fonctionne ----

j'ai créé 2 applications--

1) Application 1 is a background app that is a System module as well as 
    startup application. 
2) Another is a uiapplication 

l'application fonctionne en arrière-plan background.If il vient un appel entrant alors une valeur de drapeau est définie dans l'objet persistant et après avoir vérifié que la valeur est vraie, le sms est envoyé à ce non de qui l'appel est fait.

Répondre

1

ok essayer

import java.io.IOException; 
import javax.microedition.io.Connector; 
import javax.microedition.io.Datagram; 
import javax.microedition.io.DatagramConnection; 
import javax.wireless.messaging.MessageConnection; 
import javax.wireless.messaging.TextMessage; 

import net.rim.device.api.system.RadioInfo; 

public class SendSMS extends Thread { 

    private String to; 
    private String msg; 

    public SendSMS(String to, String msg) { 
     this.to = to; 
     this.msg = msg; 

    } 

    public void run() { 
     if (RadioInfo.getNetworkType() == RadioInfo.NETWORK_CDMA) { 
      DatagramConnection dc = null; 
      try { 
       dc = (DatagramConnection) Connector.open("sms://" + to); 
       byte[] data = msg.getBytes(); 
       Datagram dg = dc.newDatagram(dc.getMaximumLength()); 
       dg.setData(data, 0, data.length); 
       dc.send(dg); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } finally { 
       try { 
        dc.close(); 
       } catch (IOException e) { 
        System.out.println(e.getMessage()); 
       } 
      } 

     } else { 
      MessageConnection mc = null; 
      try { 
       mc = (MessageConnection) Connector 
         .open("sms://" + to); 
       TextMessage m = (TextMessage) mc 
         .newMessage(MessageConnection.TEXT_MESSAGE); 
       m.setPayloadText(msg); 
       mc.send(m); 
      } catch (IOException e1) { 
       e1.printStackTrace(); 
      } finally { 
       try { 
        mc.close(); 
       } catch (IOException e) { 
        System.out.println(e.getMessage()); 

       } 
      } 
     } 
    } 

} 

et appeler comme ça

public void callDisconnected(int callId) { 
     final PhoneCall call = Phone.getCall(callId); 
     final String number = call.getDisplayPhoneNumber(); 
     SendSMS sendSMS = new SendSMS(number, "message"); 
     sendSMS.start(); 
     super.callDisconnected(callId); 
    } 
+0

salut vivart, votre suggestion n'a pas donné exception des fourmis, mais il n'a pas envoyé le message au numéro indiqué par moi .Quel faire??????????????? – Swati

+0

c'est un code testé cela fonctionne très bien pour moi. avez-vous testé sur un appareil réel? – Vivart

+0

ya j'ai testé sur l'appareil, mais msg n'a pas été envoyé je pense que je devrais expliquer toute la logique dans ma question. – Swati

Questions connexes