【发布时间】:2015-02-10 16:33:18
【问题描述】:
我已成功在 OS X 上的 info.plist 中添加了一个自定义 URI 方案,因此只要用户在浏览器中输入“myApp:SomeParameter”,我的基于 Java 1.7 的应用程序(用 Netbeans 编写)就会启动:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>My App</string>
<key>CFBundleURLSchemes</key>
<array>
<string>myApp</string>
</array>
</dict>
</array>
如果安装在 Windows 机器上,我还成功地为应用程序添加了相应的注册表项。问题在于,在 Windows 平台上,我可以轻松地传递参数(在上述情况下,我想要输入的 uri“myApp:SomeParameter”中的“SomeParameter”)。它只是作为常规参数传递给应用程序主方法,但在 OS X 上不是这种情况。我做了一些研究并尝试了this solution,但它需要一些 Cocoa 库,并且在 Windows 上编译和运行时会导致问题。
编辑:我试图追踪一个包含 com.apple.eawt.Application.setOpenURIHandler() 的 AppleJavaExtensions 版本,但我只找到了 1.4 版本,它丢失了。知道为什么吗?
是否有另一种方法可以将参数从自定义 URI 方案传递到在 Mac / OS X 上运行的跨平台 Java 应用程序?
编辑 2: 请参阅下面接受的答案,但作为旁注:我们成功地尝试了使用 AppleScript 作为中间层的可能解决方法。 this article 中的脚本可以简化为接收带有参数的完整 URL,然后使用查询字符串作为普通命令行参数调用基于 Java 的应用程序。
【问题讨论】:
-
作为一个附带问题,这是否成功接收初始启动链接参数?我已经完成了这项工作,但是在应用加载后没有收到第一个链接的数据,只是任何后续点击。
标签: java macos url-scheme info.plist