×
Namespaces

Variants
Actions

Wrong exception thrown when sending too large SMS message 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:Technical writer 1 (12 May 2009)
Last edited: hamishwillee (24 Jul 2013)

Description

When sending a too large SMS message, a 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, a java.io.InterruptedIOException will be thrown instead of java.lang.IllegalArgumentException.


Solution

Currently no solution exists.

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