使用Java实现10.8通知中心

20

这只是一个普遍的问题,我并没有实际项目或其他想要做这件事情的东西。 是否可能在Java中构建应用程序并添加一些框架内容或其他内容,并使用Notication Center?

4个回答

16

我写了一个简单的 C -> Objective-C 面向对象编程桥接 .dylib,导出了一个名为 showNotification 的函数,可以立即发送通知。

然后我写了一个JNA 包装器来包装这个dylib中导出的函数。我确信你可以使用 RococoaJNAerator 的组合来完全消除这个 dylib。

接下来,我编写了一个简单的Java应用程序,并将其转化为应用程序包。这是很重要的一点。如果您的Java应用程序不在应用程序包中,则无法传递通知。

消息将传递到通知中心。

已传递通知的屏幕截图

这是完全可行的,只需遵循 NSUserNotificationCenter 的规则即可-它必须在应用程序包中

我使用了Java 7,更新9。 另一个问题似乎获得了更多成功

用于构建这个简单应用程序的代码在GitHub上可用。它包含一个Xcode项目,用于创建 .dylib,以及一个NetBeans项目,该项目利用 .dylib 发送通知。


1
我已经更新了答案,并附上了相关代码的链接。它并不复杂,只是作为示例代码而已。 - Anya Shenanigans
请参考此答案了解如何在没有应用程序包的情况下发送通知。 - Simon Kissane

12

我找到了一个可能适用于您的解决方案,您可以使用Apple脚本在osx上显示通知,请尝试以下方法:

Runtime.getRuntime().exec(new String[] { "osascript", "-e", "display notification "This is a message" with title "Title" subtitle "Subtitle" sound name "Funk"" });

您可以在这里阅读有关Apple script通知的内容。


这实际上是我发现的最简单的方法,在我的El Capitan上运行,不需要应用程序包。 - Moritz Schöfl
这个很好用。优秀的解决方案! - suomi35

5

一种可能的解决方案是当应用程序升级到Growl 2.0时,将Growl通知转发到通知中心。

Growl 2的信息

使用当前版本可以通过MoutainGrowl转发Growl消息

在Java下可以使用libgrowljgntp使用Growl

也许这不是最干净的解决方案,并且对用户有一些要求,但它绝对是可行的。


4

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