当前位置:  开发笔记 > 编程语言 > 正文

在多个平台中注册URL协议处理程序

如何解决《在多个平台中注册URL协议处理程序》经验,为你挑选了1个好方法。

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

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

这样做有什么综合方式吗?或者某种框架推断不同操作系统的差异.



1> Gary Rowe..:

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

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

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

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

例如,在Mac世界中,存在EAWT库,该库不可用于分发,但提供对本机事件API的访问.这意味着您的应用程序需要能够在运行时找到该库,然后反思地使用本机类(您无法对它们进行硬编码,因为您无法保证在具有支持的平台上构建应用程序库,由于许可限制,您不能包含它.如果这听起来很辛苦 - 请相信我.

在Windows上,您需要更新注册表,以便在有人使用该协议时启动您的应用程序.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上,情况有点不同,依赖于exampleapp.desktop放在/usr/share/applications文件夹中的文件sudo update-desktop-database.

足够的说话 - 给我代码!

您可以在MultiBit源代码中找到它.我并不打算把它拉进它自己的项目中,而是钻进platform包中,只需从那里拉出代码就足够了(它是独立的).应用程序使用IzPack进行安装,因此Windows的注册表项也可供使用.

该代码最初是在v0.3分支中引入的,但从2012年第一季度开始将成为主流.它都是麻省理工学院的许可证,因此您可以随心所欲地做任何事情.如果您发现错误,请报告它们,或者更好地修复它们并提供拉取请求,以便其他人可以受益.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有