Oto co należy zrobić:
Part One:
Najpierw musisz skonfigurować, aby system OS X wiedział, że rozszerzenie .example
powinno być powiązane z Twoją aplikacją. Odbywa się to za pomocą pliku Info.plist twojej aplikacji, pod warunkiem, że już zawarłeś swój kod Java w pakiecie .app
(zobacz inne pytania, jak to zrobić).
This example pokazuje dokładnie, co dodać do pliku Info.plist (należy pamiętać, że chociaż przykład dotyczy iOS, działa dokładnie tak samo na OS X). Nie będę powielać to, co mówi, ale w skrócie, trzeba dodać dwa przyciski:
CFBundleDocumentTypes
: Pozwala OS X znać rodzaj dokumentów, które mogą być otwierane przez aplikację
UTExportedTypeDeclarations
: Informuje OS X o niestandardowych typu dokumentu specyficzne dla tej aplikacji, która w tym przypadku jest .example
pliki
Należy pamiętać, że istnieje szereg klawiszy takich jak CFBundleTypeExtensions
że wiele zrobić to samo, co powyżej klawiszy, ale zostały one przestarzałe od OS 10.5, więc nie chcesz ich używać w przypadku, gdy Apple je całkowicie usunie.
Jeśli dodasz to wszystko, a powiązanie typów plików nie działa, możesz spróbować użyć debug the problem using lsregister, narzędzia Terminal, które poinformuje Cię o wszelkich problemach. Jeśli wróci bez żadnych błędów, wszystko powinno zostać skonfigurowane.
Część druga:
Teraz OS X otworzy aplikację po dwukrotnym kliknięciu na plik kończąc .example
, trzeba pozwolić aplikacja Java wiedzieć, jak radzić sobie plik jest otwierany.
Twoja aplikacja będzie otrzymywać zdarzenie typu com.apple.eawt.AppEvent.OpenFilesEvent
, z którym będziesz musiał sobie poradzić.Być może zadajesz sobie pytanie, jak radzisz sobie z zdarzeniem wywołanym przed uruchomieniem aplikacji Java, ale wydaje się, że Java najpierw wykonuje wszystko w głównej metodzie aplikacji, a następnie uruchamia zdarzenie. Więc gdzieś w głównym sposobem na tym samym wątku, tworzenie słuchacza z następującego kodu:
//First, check for if we are on OS X so that it doesn't execute on
//other platforms. Note that we are using contains() because it was
//called Mac OS X before 10.8 and simply OS X afterwards
if (System.getProperty("os.name").contains("OS X")){
Application a = Application.getApplication();
a.setOpenFileHandler(new OpenFilesHandler() {
@Override
public void openFiles(OpenFilesEvent e) {
for (File file : e.getFiles()){
//Handle your file however you'd like
}
}
});
}
Po wykonaniu tej czynności, Twoja aplikacja będzie obsługiwać zarówno pliki dokumentów, które były otwarte przed aplikacja została uruchomiona i po aplikacji została uruchomiona.
Pseudo-odpowiedź: przeczytaj dokumenty. Jest tam. (nie tylko przeszukuj Javę, ale ogólnie: programowanie na komputerach Macintosh – JoePasq
Jakieś konkretne miejsce lub link? Przeglądałem dokumenty, ale nie mogę tego zrobić, przykład byłby miły. – steve