platformRequest for call在j2me中不起作用

时间:2012-06-20 16:07:07

标签: java-me call lwuit midp

我正在构建电话簿的应用程序。我正在使用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)

我不知道这里有什么问题?

1 个答案:

答案 0 :(得分:2)

您的第二个代码段中可能会有隐藏符号(例如尾随空格)。

要了解是否如此,请将调试消息修改为System.out.println("[" + number + "]"),重新运行测试并重新检查输出。

更新

  

似乎在数字末尾有一个换行符号,该号码在注释中显示为[tel:01239201300 ](第二个括号出现在评论的下一行)。

好吧,仅仅这一点似乎足以获得Invalid Phone Number

MIDlet.platformRequest的API文档针对电话号码网址引用了RFC2806,,该网址似乎非常严格地指定了哪些内容以及 2.2“tel”URL方案