| ID | KIJ001371 | Creation date | May 12, 2009 |
| Platform | S60 3rd Edition, FP2, S60 5th Edition | Devices | Nokia N79, Nokia N96, Nokia 5730 XpressMusic, Nokia 5800 XpressMusic |
| Category | Java ME | Subcategory | Messaging, SMS |
| Keywords (APIs, classes, methods, functions): java.lang.IllegalArgumentException, java.io.InterruptedIOException |
When sending a too large SMS message, a java.io.InterruptedIOException will be thrown instead of java.lang.IllegalArgumentException.
1. Implement the following test MIDlet:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.io.Connector;
import javax.wireless.messaging.*;
public class SMSSendTest extends MIDlet
implements CommandListener
{
Display d;
Form f;
TextField phoneNumber;
TextField smsInfo;
Command exitCmd;
Command sendCmd;
String mese;
public SMSSendTest()
{
d = Display.getDisplay(this);
exitCmd = new Command("Exit", 1, Command.EXIT);
sendCmd = new Command("Send SMS", 1, Command.OK);
f = new Form("SMS Test");
phoneNumber = new TextField("Enter SMS receiver phone number", "+3581234567", 20, TextField.PHONENUMBER);
mese="VeryLongString";//the string must be approximately 5000-6000 characters
smsInfo= new TextField("Text", "Size of the test SMS text: "+mese.length(), 6000, TextField.ANY);
f.append(phoneNumber);
f.append(smsInfo);
f.addCommand(sendCmd);
f.addCommand(exitCmd);
f.setCommandListener(this);
d.setCurrent(f);
}
public void commandAction(Command c, Displayable d)
{
if(c == exitCmd)
try
{
destroyApp(true);
notifyDestroyed();
}
catch(Exception e)
{
smsInfo.setString(e.getMessage());
}
else
if(c == sendCmd)
send();
}
private void send()
{
Alert smsAlert;
smsAlert = new Alert("SMS Alert", "", null, null);
smsAlert.setTimeout(Alert.FOREVER);
try
{
String addr = "sms://" + phoneNumber.getString();
MessageConnection conn = (MessageConnection)Connector.open(addr);
TextMessage msg = (TextMessage)conn.newMessage("text");
msg.setPayloadText(mese);
conn.send(msg);
smsAlert.setString("SMS send successful");
d.setCurrent(smsAlert);
}
catch(Exception e)
{
smsAlert.setString("SMS send not successful: \n"+e.toString());
d.setCurrent(smsAlert);
}
}
protected void startApp()
throws MIDletStateChangeException
{
}
protected void pauseApp()
{
}
protected void destroyApp(boolean bool)
throws MIDletStateChangeException
{
}
}
2. Launch the test MIDlet and choose 'Send SMS' from Options. For the affected devices, a java.io.InterruptedIOException will be thrown instead of java.lang.IllegalArgumentException.
Currently no solution exists.
No related wiki articles found