使用navigator.mimeTypes检测通过JNLP注册的mime类型

时间:2014-02-13 00:04:35

标签: java javascript mime-types jnlp

安装并运行JNLP应用程序后,是否可以在浏览器中通过javascript使用navigator.mimeTypes来检测预期的mime类型?在OSX上使用Chrome时,我们注意到mime类型没有出现在导航器列表中。

var isSupported = navigator.mimeTypes['application/x-my-own-app'];

这是通过JNLP注册的,如下:

IntegrationService is = null;
try {
    is = (IntegrationService) ServiceManager.lookup("javax.jnlp.IntegrationService");
    if (!is.hasAssociation("application/x-my-own-app", new String[] { "myownapp", "moa" })) {
        if (!is.requestAssociation("application/x-my-own-app", new String[] { "myownapp", "moa" })) {
            System.err.println("Association creation failed");
        }
    }
 } catch (UnavailableServiceException use) {
     System.err.println("Integration service unavailable");
 }

如果出于某种原因无法在浏览器中访问已注册的mime类型,是否还有其他方法可以获得注册?

修改

过程如下:

  1. 用户首次访问该页面,他们指向.jnlp链接
  2. JNLP app下载并运行;它还注册了它的mime-type
  3. 随后的访问:

    1. 页面(javascript)检查mime类型注册
    2. 如果未找到注册,则会将用户定向到.jnlp链接。如果发现注册,则将其定向到.moa链接。

2 个答案:

答案 0 :(得分:0)

使用IntegrationService.hasAssociation(String,String[])

  

这样就可以确定应用程序已经安装,我们不需要将用户定向到.jnlp文件,而是指向.moa或.myownapp项目。

使用(轻,小)基于JNLP的小程序在浏览器中进行检测。

答案 1 :(得分:0)

不幸的是,JNLP执行的注册是在操作系统中完成的,而不是在浏览器中完成的。因此导航器无法提供我使用所需的注册。