Namespaces
Variants
Actions

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

Jump to: navigation, search
SignpostIcon Messages 52.png
Article Metadata

Tested with
Devices(s): Nokia N79, Nokia N96, Nokia 5730 XpressMusic, Nokia 5800 XpressMusic

Compatibility
Platform(s): S60 3rd Edition, FP2, S60 5th Edition

Article
Keywords: java.lang.IllegalArgumentException, java.io.InterruptedIOException
Created: User:TechnicalWriter2 (12 Jun 2009)
Last edited: hamishwillee (01 Aug 2012)


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 1 August 2012, at 07:41.
76 page views in the last 30 days.
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved