在Java中使用10.8通知中心

时间:2012-07-30 11:31:06

标签: java macos notifications osx-mountain-lion

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

4 个答案:

答案 0 :(得分:16)

我写了一个简单的C - >导出函数Objective-C的{​​{1}} shim .dylib立即发送通知。

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

然后我写了一个简单的java应用程序,我变成了app bundle。这是重点。如果您的Java应用程序不在应用程序包中,则不会传递通知。

发送到通知中心的消息。

Screenshot of delivered notification

这显然是可行的,您只需要遵守showNotification - 的规则,它必须在应用包中

我使用java 7,为此更新了9。 Another question seems to have had even more success

用于构建此简单应用程序的代码是available on github。它包含一个用于创建NSUserNotificationCenter的xcode项目,以及一个利用.dylib发送通知的netbeans项目。

答案 1 :(得分:9)

我找到了一个可能对您有用的解决方案,您可以使用Apple script在osx上显示通知,试试这个:

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

您可以在here

中了解Apple script的通知

答案 2 :(得分:5)

当应用程序更新为Growl 2.0时,一种可能的解决方案是Growl,它会将Growl Notifications转发到通知中心。

有关Growl 2

的信息

使用MoutainGrowl

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

可以在Java libgrowljgntp

下使用Growl

也许这不是最干净的解决方案,它对用户有一些要求,但它肯定是有效的

答案 3 :(得分:4)

我建议你看看IntelliJ IDEA如何处理MountainLionNotificationsGrowlNotifications中的通知。

正如其他答案中所建议的那样,它使用JNA来操作NSObject。