我正在构建电话簿的应用程序。我正在使用lwuit进行ui构建,因此我的应用程序在MIDP2.1和CDLC1.1上运行。该应用程序针对诺基亚s40设备。
当我从我的表单类中调用platformRequest
方法时,如下面这段代码那样使用常数,其中StartApp
是我的主要MIDlet。
try
{
if (StartApp.getInstance().platformRequest("tel:01239201300") == true)
{
StartApp.getInstance().notifyDestroyed();
}
}
catch(Exception ex)
{
System.out.println(ex);
}
应用程序正确运行并生成一个调用请求,但是如果我尝试这样做就像下面这段代码一样
try{
String number = "tel:" + lblTelNumber.getText();
System.out.println(number);
if (StartApp.getInstance().platformRequest(number) == true)
{
StartApp.getInstance().notifyDestroyed();
}
}
catch(Exception ex)
{
System.out.println(ex);
}
这会导致以下异常。
ordinary platformRequest: tel:01239201300
URL is : tel:01239201300
javax.microedition.io.ConnectionNotFoundException: Invalid Phone Number
at javax.microedition.midlet.MIDlet.platformRequest(+76)
at package1.InformationForm.Call(+48)
我不知道这里有什么问题?
答案 0 :(得分:2)
您的第二个代码段中可能会有隐藏符号(例如尾随空格)。
要了解是否如此,请将调试消息修改为System.out.println("[" + number + "]")
,重新运行测试并重新检查输出。
似乎在数字末尾有一个换行符号,该号码在注释中显示为
[tel:01239201300 ]
(第二个括号出现在评论的下一行)。
好吧,仅仅这一点似乎足以获得Invalid Phone Number
。
MIDlet.platformRequest的API文档针对电话号码网址引用了RFC2806,,该网址似乎非常严格地指定了哪些内容以及 2.2“tel”URL方案