2010-02-04 47 views
0

我正嘗試向手機發送文本消息,並且出現錯誤J2ME SMS IOException

由於未知原因未能發送。 -java.io.IOException

import javax.microedition.io.Connector; 
import javax.microedition.lcdui.Display; 
import javax.microedition.lcdui.Form; 
import javax.microedition.midlet.*; 
import javax.wireless.messaging.MessageConnection; 
import javax.wireless.messaging.TextMessage; 

public class Midlet extends MIDlet { 
    Form form = new Form("Form"); 
    Display display; 
    public void startApp() 
    { 
     display = Display.getDisplay(this); 
     display.setCurrent(form); 

     sendSMS("Hello from j2me"); 
    } 

    public void pauseApp() { 
    } 

    public void destroyApp(boolean unconditional) { 
    } 

    private void sendSMS(String s) { 
     String destination = "+12234567890"; 
     String addr = "sms://" + destination; 

     out("Setting up message"); 
     MessageConnection sender = null; 

     try 
     { 
      try 
      { 
        sender = (MessageConnection) Connector.open(addr); 
        TextMessage msg = (TextMessage) sender.newMessage(MessageConnection.TEXT_MESSAGE); 
        msg.setPayloadText(s); 
        out("sending"); 
        sender.send(msg); 
        out("sent successfully"); 
      } 
      catch (Exception ex) 
      { 
        out("Error1:" + ex.getMessage() + " : " + ex.toString() + "\n\n"); 
      } 
      finally 
      { 
       sender.close(); 
      } 
     } 
     catch (Exception ex) { 
       //handle exception 
       out("Error2:" + ex.getMessage() + " : " + ex.toString() + "\n\n"); 
     } 
    } 

    private void out(String str) 
    { 
     form.append(str + "\n"); 
    } 
} 
+0

這是什麼手機故障?如果您爲消息指定目標端口,如「sms:// + 12234567890:3000」,它仍會失敗嗎?如何不使用國際電話號碼? – 2010-02-05 11:35:28

回答

2

您是否向您的jad添加了權限?

的MIDlet-權限:javax.microedition.io.Connector.sms,javax.wireless.messaging.sms.send

+0

非常感謝您的答覆..我試圖發送短信很多天,但我無法獲得解決方案。您的回答提醒我在midlet中添加權限。再次感謝。 – 2012-11-02 07:41:11

0

有各種各樣的原因:

  • 現收現付的手機上沒有信用
  • 沒有移動接收
  • SMS API已被手機運營商
  • 用戶拒絕安全提示(這將導致SecurityException
  • 無效手機號碼