×
Namespaces

Variants
Actions
Revision as of 07:06, 24 July 2013 by hamishwillee (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Wrong exception thrown when sending SMS messages that are too long using Java ME (Known Issue)

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata
Tested with
Devices(s): Nokia N79, Nokia N96, Nokia 5730 XpressMusic, Nokia 5800 XpressMusic
CompatibilityArticle
Created: User:TechnicalWriter2 (12 Jun 2009)
Last edited: hamishwillee (24 Jul 2013)


Description

When sending an SMS message that is too long, java.io.InterruptedIOException will be thrown instead of java.lang.IllegalArgumentException.

How to reproduce

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, java.io.InterruptedIOException will be thrown instead of java.lang.IllegalArgumentException.


Solution

This issue is expected to be fixed in future software versions, starting with S60 5th Edition.

This page was last modified on 24 July 2013, at 07:06.
50 page views in the last 30 days.
×