2011-02-08 19 views
0

BlackBerry 4.5 OSを使用してSMSを送信しようとしています。 このsend-SMSコードは8300 Curveで動作していますが、私が試した他のデバイスでは動作していません。どうして?ブラックベリーデバイスからのSMS問題の送信

次は、SMSを送信するための私のコードです:

new Thread(){ 
    MessageConnection conn; 
    public void run() { 

    if (RadioInfo.getNetworkType() == RadioInfo.NETWORK_CDMA) { 
     DatagramConnection dc = null; 
     try { 
      dc = (DatagramConnection) Connector.open(
        "sms://"+ recepient.getRecepient()); 
      byte[] data = txt.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 { 
     try{ 
      conn = (MessageConnection) Connector.open("sms://"+ recepient.getRecepient()); 
      //generate a new text message 
      TextMessage tmsg = (TextMessage) conn.newMessage(MessageConnection.TEXT_MESSAGE); 
      //set the message text and the address 
      tmsg.setAddress("sms://" + recepient.getRecepient()); 
      tmsg.setPayloadText(txt); 
      //finally send our message 
      conn.send(tmsg); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       conn.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
    } 
}.start(); 
+0

他にどのような機器あなたは一緒にテストしていますか?彼らはすべてOS 4.5ですか? –

答えて

2

すると、その作業イムは、ブラックベリーOS 5.0および6.0でこのコードをテストした。このコードを試してみてください......

package mypackage; 

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; 
import net.rim.device.api.ui.Field; 
import net.rim.device.api.ui.FieldChangeListener; 
import net.rim.device.api.ui.Keypad; 
import net.rim.device.api.ui.UiApplication; 
import net.rim.device.api.ui.component.BasicEditField; 
import net.rim.device.api.ui.component.ButtonField; 
import net.rim.device.api.ui.component.Dialog; 
import net.rim.device.api.ui.container.MainScreen; 

public class HelloBlackBerryScreen extends MainScreen { 

private BasicEditField basicEditField1, basicEditField2; 
private String addr = "9998887777"; 
private String message = "This is a test message."; 

public HelloBlackBerryScreen() { 
    super(MainScreen.VERTICAL_SCROLL | MainScreen.VERTICAL_SCROLLBAR); 
    setTitle("HelloBlackBerry"); 

    basicEditField1 = new BasicEditField("To : ", addr, 500, BasicEditField.EDITABLE); 
    basicEditField2 = new BasicEditField("Message : ", message, 500, BasicEditField.EDITABLE); 

    ButtonField buttonField_1 = new ButtonField("Send", ButtonField.CONSUME_CLICK | ButtonField.FIELD_HCENTER); 

    buttonField_1.setChangeListener(new FieldChangeListener() { 
     public void fieldChanged(Field arg0, int arg1) { 
      try { 
       addr = basicEditField1.getText(); 
       message = basicEditField2.getText(); 
       sendSMS(addr, message); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       System.out.println("Error send msg : " + e.toString()); 
      } 
     } 
    }); 

    this.add(basicEditField1); 
    this.add(basicEditField2); 
    this.add(buttonField_1); 
} 

private void sendSMS(final String no, final String msg) { 
    try { 
     new Thread() { 
      public void run() { 
       if (RadioInfo.getNetworkType() == RadioInfo.NETWORK_CDMA) { 
        DatagramConnection dc = null; 
        try { 
         dc = (DatagramConnection) Connector.open("sms://" + no); 
         byte[] data = msg.getBytes(); 
         Datagram dg = dc.newDatagram(dc.getMaximumLength()); 
         dg.setData(data, 0, data.length); 
         dc.send(dg); 
         UiApplication.getUiApplication().invokeLater(new Runnable() { 
          public void run() { 
           try { 
            System.out.println("Message Sent Successfully : Datagram"); 
            Dialog.alert("Message Sent Successfully : Datagram"); 
           } catch (Exception e) { 
            System.out.println("Exception **1 : " + e.toString()); 
            e.printStackTrace(); 
           } 
          } 
         }); 
        } catch (Exception e) { 
         System.out.println("Exception 1 : " + e.toString()); 
         e.printStackTrace(); 
        } finally { 
         try { 
          dc.close(); 
          dc = null; 
         } catch (IOException e) { 
          System.out.println("Exception 2 : " + e.toString()); 
          e.printStackTrace(); 
         } 
        } 
       } else { 
        MessageConnection conn = null; 
        try { 
         conn = (MessageConnection) Connector.open("sms://" + no); 
         //generate a new text message 
         TextMessage tmsg = (TextMessage) conn.newMessage(MessageConnection.TEXT_MESSAGE); 
         //set the message text and the address 
         tmsg.setAddress("sms://" + no); 
         tmsg.setPayloadText(msg); 
         //finally send our message 
         conn.send(tmsg); 
         UiApplication.getUiApplication().invokeLater(new Runnable() { 
          public void run() { 
           try { 
            System.out.println("Message Sent Successfully : TextMessage"); 
            Dialog.alert("Message Sent Successfully : TextMessage"); 
           } catch (Exception e) { 
            System.out.println("Exception **1 : " + e.toString()); 
            e.printStackTrace(); 
           } 
          } 
         }); 
        } catch (Exception e) { 
         System.out.println("Exception 3 : " + e.toString()); 
         e.printStackTrace(); 
        } finally { 
         try { 
          conn.close(); 
          conn = null; 
         } catch (IOException e) { 
          System.out.println("Exception 4 : " + e.toString()); 
          e.printStackTrace(); 
         } 
        } 
       } 
      } 
     }.start(); 
    } catch (Exception e) { 
     System.out.println("Exception 5 : " + e.toString()); 
     e.printStackTrace(); 
    } 
} 

protected boolean keyDown(int keycode, int status) { 
    if (Keypad.key(keycode) == Keypad.KEY_ESCAPE) { 
     close(); 
     return true; 
    } 
    return super.keyDown(keycode, status); 
} 
}