Перетаскивание файлов на значок приложения в Dock

Я уже несколько дней ломаю голову над этой проблемой и не могу понять, что я делаю не так (или это какая-то ошибка):

У меня есть собственное приложение для Mac (на Java, если это важно). По сути, он берет определенный тип пакета документов, выполняет некоторую обработку и отправляет результаты на сервер. У меня все работает, за исключением одного случая использования, когда пользователь перетаскивает «файл» на значок док-станции приложения.

Все, что я прочитал до сих пор, похоже, указывает на то, что при нажатии на значок Mac Dock используются те же службы запуска, что и Finder. Тем не менее, открытие каталога Applications и перетаскивание в нем приложения работает, в то время как нажатие на значок приложения в Dock ничего не делает.

Итак, некоторые особенности того, что я пробовал до сих пор:

  • Приложение обрабатывает документы с расширением * .foo, которые представляют собой пакеты документов (т. Е. Щелчок по запросу дает возможность «Показать содержимое пакета»).
  • Документ имеет UTI org.example.foo, который соответствует UTI com.apple.package и public.composite-content (вся информация скопирована из ключа UTI экспортированного типа Info.plist приложения-владельца)
  • Info.plist объявляет этот тип документа в UTI импортированного типа (ключ UTImportedTypeDeclarations)
  • Also in Info.plist, the UTI is declared in Document Types (CFBundleDocumentTypes key)
    • CFBundleTypeExtensions includes "foo"
    • CFBundleTypeOSTypes установлен на "****"

Cmd-Opt-drop на значке Dock (для принудительного сброса) ничего не делает. Падение в Finder работает точно так, как ожидалось. Таким образом, это, похоже, проблема, связанная с падением именно на значок Dock.

Есть идеи, что изменить?


person wmorrell    schedule 30.06.2010    source источник
comment
Какую версию Mac OS X вы используете? Поскольку API Java устарел в версии 10.4 developer.apple.com/mac/ библиотека / qa / qa2001 / qa1342.html   -  person Maz    schedule 01.07.2010
comment
Делаете ли вы какие-либо предположения о текущем рабочем каталоге при запуске приложения (например, используя относительные пути к файлам данных или что-то подобное?)? Рабочий каталог при запуске из Dock может отличаться от того, когда приложение запускается из Finder.   -  person Paul R    schedule 01.07.2010
comment
В CFBundleDocumentTypes вы указали LSTypeIsPackage?   -  person JWWalker    schedule 01.07.2010


Ответы (1)


Думаю, Maz ударил в самую суть проблемы. Приложение настроено для работы в Mac OS X 10.5 или 10.6, и используемые мной API Java (com.apple.eawt. *) Считаются устаревшими без замен; что, вероятно, объясняет, почему это в основном работает, но не раздражает.

Кажется, что реальное решение будет включать в себя обратную разработку исполняемого файла JavaApplicationStub для работы с новыми API-интерфейсами и создание перехватчиков JNI, чтобы соответствующие события передавались моему приложению.

person wmorrell    schedule 01.07.2010