在Java中使用10.8通知中心
这只是一个普遍的问题。 我没有实际项目或其他我想做的事情。 是否可以在Java中构建应用程序并添加一些框架内容或其他内容并使用Notication Center?
我写了一个简单的C
– > Objective-C
shim .dylib,它导出了一个函数showNotification
它立即发送了一个通知。
然后我为dylib中导出的函数编写了一个JNA
包装器。 我确信你可以使用Rococoa和JNAerator的组合来完全消除这个dylib。
然后我写了一个简单的java应用程序,我变成了一个app bundle 。 这是重点。 如果您的Java应用程序不在应用程序包中,则不会传递通知。
邮件已发送至通知中心。
这显然是可行的,您只需要遵守NSUserNotificationCenter
的规则 – 它必须在应用程序包中 。
我使用java 7,为此更新了9。 另一个问题似乎取得了更大的成功 。
用于构建这个简单应用程序的代码可以在github上找到 。 它包含一个用于创建.dylib
的xcode项目,以及一个利用.dylib
传递通知的netbeans项目。
我找到了一个可能对您有用的解决方案,您可以使用Apple script
在osx上显示通知,试试这个:
Runtime.getRuntime().exec(new String[] { "osascript", "-e", "display notification "This is a message" with title "Title" subtitle "Subtitle" sound name "Funk"" });
您可以在此处阅读Apple script
的通知
一个可能的解决方案是Growl,当应用程序将更新为Growl 2.0时,它会将Growl Notifications转发到Notification Center。
Growl 2的信息
可以使用MoutainGrowl使用当前版本转发Growl消息
Growl可以在Java下使用libgrowl或jgntp
也许它不是最干净的解决方案,它对用户有一些要求,但绝对是有效的
我建议你看看IntelliJ IDEA如何处理MountainLionNotifications和GrowlNotifications中的通知。
正如其他答案中所建议的那样,它使用JNA来操纵NSObject。