【问题标题】:Getting the user's default browser in Java在 Java 中获取用户的默认浏览器
【发布时间】:2011-05-06 11:10:28
【问题描述】:

我想知道如何在 Java 中获取用户默认 Internet 浏览器的位置。我怎样才能得到这个?我更喜欢它作为浏览器可执行文件的 URI。必须跨平台工作。

【问题讨论】:

  • 我敢打赌,这在小程序中是完全不可能的。如果您谈论的是 Java 程序,那么至少可以说,让它跨平台工作是一项挑战。
  • ....谢谢?这就是我问这样一个知识渊博的社区的原因。这个网站通常会给出有用的答案。
  • 最大的问题是:“为什么?”。这听起来更像是您在问如何实现您认为它是解决某个问题的正确解决方案(但毕竟不是)的解决方案,而不是仅仅详细说明实际问题。如果您最终只想让它打开一个网页,那么可以,按照 camickr 的建议使用Desktop#browse()
  • 我想记录他们的默认浏览器,并希望它在我的日志文件中的安装位置
  • 抱歉,我完全不明白为什么这些信息对您如此重要,以至于您想打破 Java 的跨平台意识形态。无论如何,我仍然迷失在这一点上。祝你好运解决问题:)

标签: java browser


【解决方案1】:

你能做的最安全的事情是这样的:

if (Desktop.isDesktopSupported()) 
{
  Desktop.getDesktop().browse("your url here");
}

有关桌面类的更多信息(邮件、打印、编辑等)here

【讨论】:

  • 将其更改为已接受的答案,因为它有一个可用的示例
【解决方案2】:

您应该为此使用 Desktop 类。这是将调用默认浏览器的跨平台 API。

【讨论】:

    【解决方案3】:

    我希望它作为浏览器可执行文件的 URI。

    根据您的 cmets,我假设您在用户使用他/她的网络浏览器访问您的网站时需要此信息。如果是这样,答案是信息不可用,除非您可以说服用户安装受信任的浏览器插件/插件或运行受信任的小程序。

    原因是不受信任的网页能够获取此信息将构成安全漏洞。它揭示了有关用户个人偏好的信息,并可能使黑客更容易瞄准用户的浏览器并破坏他/她的机器。

    您可以做的最好的事情是查看 HTTP 请求的 UserAgent 标头。这可能不准确,但这是用户的要求。

    【讨论】:

    • 它是一个离线 Java 应用程序。到目前为止,还没有访问任何网站。
    • 即便如此,隐私和安全问题仍然有效。当我在我的机器上安装应用程序时,我不希望它回调告诉应用程序开发人员我的机器是如何配置的。
    • (自我注意 - 永远不要安装 @Supuhstar 的应用程序之一。)
    • 那么,你会很高兴知道我什至不会尝试这样做。感谢您的提醒!
    • 事实上,我很高兴知道这一点。 IMO,您做出了明智的决定。
    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 2023-03-28
    • 2011-09-27
    • 2017-02-05
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    相关资源
    最近更新 更多