使用内容处理程序API(JSR 211)打开应用程序

时间:2010-10-13 16:39:17

标签: java java-me mobile-phones

我希望能够使用诺基亚6212上的内容处理程序API(JSR 211)通过我的应用程序启动本机和J2ME应用程序。

目前,我无法这样做,因为它始终声明“找不到内容处理程序”并抛出javax.microedition.content.ContentHandlerException

目前,我正试图让手机启动其浏览器并转到某个网站,只是为了测试我可以使用该框架。我尝试了很多不同的Invocation对象:

//throw exceptions
new Invocation("http://www.somesite.com/index.html",
  "application/internet-shortcut");
new Invocation("http://www.google.co.uk","text/html");
// a long shot, I know
new Invocation("http://www.somesite.com/text.txt","text/plain");
// massive long shot
new Invocation("http://www.google.co.uk","application/browser");

//appears to download the link and content (and definitely does in the Nokia
// emulator) and then throws an exception
new Invocation("http://www.google.co.uk");
new Invocation("http://www.somesite.com/index.html");

以下是我一直使用的代码,请记住经常更改的参数以生成不同的Invocation对象。

/*
 * Invokes an application using the Content Handler API
 */
public void doInvoke(String url, String mime, String payload){
    Registry register = Registry.getRegistry(this.getClass().getName());
    Invocation invoke = new Invocation(url, mime, null, false,
      ContentHandler.ACTION_OPEN);

    boolean mustQuit = false;

    try {
        mustQuit = register.invoke(invoke);
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (ContentHandlerException e) {
        e.printStackTrace();
    } catch (SecurityException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    if(mustQuit){
        this.quit();
    }
}

1 个答案:

答案 0 :(得分:1)

试试这个:

Registry register = Registry.getRegistry(this.getClass().getName());

您必须为MIDlet继承者调用Registry.getRegistry。只需使用您的MIDlet获取类名。