从java中的当前工作浏览器打开一个新URL

时间:2012-01-11 07:54:41

标签: java

目前我有一个带网址的网站,例如。说:http://mydomain/index.jsp我已经在firefox浏览器中打开了网站&我认为我的默认浏览器是Google Chrome。

现在在java中,我需要使用当前正在运行的浏览器(我的网站打开的firefox)打开一个新的URL。当我尝试使用时:

Desktop desktop = java.awt.Desktop.getDesktop();
URI uri = new java.net.URI(my_new-uRL);
desktop.browse(uri);

新的网址是以chrome格式打开的(因为它是我的默认浏览器)。我不需要这样。由于我的所有会话都在firefox中有效,我需要我的代码用相同的firefox浏览器打开新的url。我怎么能这样做?

感谢。

3 个答案:

答案 0 :(得分:2)

似乎唯一的方法是运行以URL为参数启动Firefox的命令。运行命令最简单的方法是使用Runtime.exec()方法之一:

String[] args = new String[] { "full/path/to/firefox.exe or linux binary", "your-new-url" };
Runtime.getRuntime().exec( args );

(有关exec()重载变体的更多信息,请参阅API文档。还要检查firefox的cmd参数的格式,我不确定)

该方法的一个明显缺点是使用Firefox的硬编码路径。可能在你的情况下不是问题。

<强>更新

行。换句话说,首先它需要以某种方式加载当前运行的应用程序的列表。坦率地说,我不认为Java很容易实现。这取决于操作系统。作为第一个想法,在Linux中,您可以运行类似“top”或“ps”的内容并分析输出以查看正在运行的应用程序。在Windows中,它很可能需要调用使用Win API执行任务的本机代码(C / C ++)(顺便说一下,由于安全原因,它可能会受到限制)。

答案 1 :(得分:1)

以下是便于所请求功能的应用程序的URL。希望这会有所帮助。

http://browserlaunch2.sourceforge.net/docs.shtml#defbrowserfromsysprop

答案 2 :(得分:1)

我知道这是一个相当古老的话题,但在我的工作中遇到了这个要求,我想我会分享解决方案。

首先,您需要确定用户正在使用的操作系统和浏览器。 对于您可以使用的操作系统:

String osName = System.getProperty("os.name"); 
String osVersion = System.getProperty("os.version");

为了找到浏览器,这里有一个很好的解释: http://www.rgagnon.com/javadetails/java-detect-browser-type-from-an-applet.html

我做的是在我的java代码中添加:

String browser = (String)win.eval("getUserAgent();")

并在部署applet的html中:

<head>
    <script>
     function getUserAgent() {
     return navigator.userAgent;
    }
   </script>

到头部,

<applet ... MAYSCRIPT height=100
applet标签中的

,高度之前。 (我还将plugin.jar添加到了类路径中)

现在你只需要使用一些if来确定操作系统和浏览器并进行处理。 例如对于linux和firefox:

String[] args = new String[] { "firefox", "http://www.google.com" };
Runtime.getRuntime().exec( args );

用于windows和firefox:

String[] args = new String[] { "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe", "http://www.google.com" };
Runtime.getRuntime().exec( args ); 

你必须为IE做这件事(不再支持chrome java applets) 还要处理Windows中路径的异常......