2011-02-08 54 views
0

我想用黑莓4.5操作系統發送短信。 此發送短信代碼正在使用8300曲線,但未嘗試任何其他設備。爲什麼?從黑莓設備發送短信問題

以下是我發送短信代碼:

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嗎? – 2011-02-08 17:28:17

回答

2

試試這個代碼及其工作IM測試此代碼對黑莓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); 
} 
}