gpt4 book ai didi

java - 在多个平台中注册 URL 协议(protocol)处理程序

转载 作者:太空狗 更新时间:2023-10-29 22:40:33 24 4
gpt4 key购买 nike

我想创建一个安装在多个平台(Windows、Mac OS、Linux)上的 Java 应用程序作为此安装的一部分我想注册一个 URL 协议(protocol)处理程序,以便在单击链接时加载我的应用程序。

即我想要这样的东西:myprotocol://example.com

有没有什么统一的方法可以做到这一点?或者某种推断不同操作系统之间差异的框架。

最佳答案

MultiBit在一系列平台上实现这一点

我刚刚在 MultiBit 项目(一个轻量级 Bitcoin 客户端)中走上了这条道路,我必须在该项目中实现启动和更新应用程序以响应自定义 URI(在我的例子中是 bitcoin:1sdfjsdfdkfdkjfdjfkjertn? amount=0.5&label=Some%20Text).

我必须实现的方法是创建一种通用方法来接收操作系统事件。很多这项工作都是基于 Macify library然后重写以支持多个任意平台。

首先是一些背景。通常,协议(protocol)处理程序是在操作系统端注册的,而不是浏览器端。这是因为协议(protocol)并不局限于浏览器,因此需要通用的支持机制。因此,您需要为要支持的每个平台创建处理程序。

例如,在 Mac 世界中有 EAWT 库,它不可用于分发但提供对 native 事件 API 的访问。这意味着您的应用程序需要能够在运行时找到这个库,然后反射性地使用 native 类(您不能对它们进行硬编码,因为您不能保证您将在支持的平台上构建您的应用程序库,由于许可证限制,您不能包含它)。如果这听起来像是艰苦的工作 - 相信我,确实如此。

在 Windows 上,您需要更新注册表,以便在有人使用该协议(protocol)时启动您的应用程序。有一个 useful set of instructions provided by Microsoft详细说明这个过程。

在 Linux 上,这些命令通常用于 Gnome 2(在命令行中传递 URI):

gconftool-2 -t string -s /desktop/gnome/url-handlers/bitcoin/command "bin/multibit %s"
gconftool-2 -s /desktop/gnome/url-handlers/bitcoin/needs_terminal false -t bool
gconftool-2 -t bool -s /desktop/gnome/url-handlers/bitcoin/enabled true

2014 年 7 月编辑

在带有 Gnome 3 (Ubuntu 11.04+) 的 Linux 上,情况是 bit different依赖于 /usr/share/applications 文件夹中的 exampleapp.desktop 文件,后跟 sudo update-desktop-database

不多说了 - 给我代码!

您可以在 MultiBit source code 中找到它.我没有费心将它拉出到它自己的项目中,而是深入到 platform 包中,只需从那里拉出代码就足够了(它是独立的)。该应用程序使用 IzPack 安装,因此也可以使用 Windows 的注册表项。

密码是first introduced in the v0.3 branch , 但将从 2012 年第一季度开始成为主流。它是 MIT 许可证,因此您可以随心所欲地使用它。如果您发现错误,请报告它们,或者更好的是,修复它们并提供拉取请求,以便其他人可以从中受益。

关于java - 在多个平台中注册 URL 协议(protocol)处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1947209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com