Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Wrong exception thrown when sending too large SMS message using Java ME (Known Issue)

From 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 04:07.
179 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×