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

3

目前,我有一个网站链接,例如:http://mydomain/index.jsp 我已经在Firefox浏览器中打开了该网站,并将Google Chrome设置为默认浏览器。

现在,在Java中,我需要使用当前正在工作的浏览器(Firefox)打开一个新的网址。当我尝试使用以下方法时:

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

新的URL在Chrome中打开了(因为它是我的默认浏览器)。我不需要这样。既然我在Firefox中有所有有效的会话,我需要我的代码使用相同的Firefox浏览器打开新的URL。我该怎么做呢?
谢谢。

你是从哪里尝试执行这段代码的? - jmj
3个回答

2

看起来唯一的方法是运行一个带有URL参数的Firefox命令。使用Runtime.exec()方法之一是运行命令的最简单方法:

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

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

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

更新

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


嗨,谢谢你的回复。我不仅需要火狐浏览器的解决方案。我需要一种用Java编写的方法(代码),可以查找用户当前正在使用的浏览器,并使同一浏览器自动打开新的URL(它可以是firefox,IE或chrome等任何东西..)。再次感谢。有没有什么办法呢? - user1045277

1

嗨,谢谢您的回复。我不需要这样的浏览器选择选项。我需要一种在Java中找到用户当前使用的浏览器并自动打开新网址的方法(代码)。再次感谢。有没有什么办法? - user1045277
让我看看几个选项。如果我找到了什么,我会告诉你的。 - Kakarot

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();")

并且在部署小程序的HTML代码中:

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

将其翻译成中文为:

到头部部分,以及


<applet ... MAYSCRIPT height=100

在applet标签中,在height之前。 (我还将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小程序),并处理Windows路径的异常情况...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接