2010-01-23 2 views
0

В Mac OS X, как я могу узнать, открывается ли конкретное приложение определенного типа?Тестирование, может ли приложение открывать определенный тип?

У меня есть два UTI, которые меня интересуют: public.text и public.image, и у меня есть список приложений. Я хочу отфильтровать список по этим двум типам, поэтому у меня есть список текстовых зрителей и список зрителей изображений.

Я видел связанный с этим вопрос, где можно получить список всех зрителей для определенного типа документа. Я мог бы сделать это и получить пересечение набора, но я бы лучше мог спросить каждое приложение по отдельности.

Есть ли какие-либо призывы к какао или углероду?

ответ

2

Если вам нужен список приложений для данного типа документа, используйте LSCopyAllRoleHandlersForContentType.

Если вам нужен список типов документов для конкретного приложения, откройте файл Info.plist приложения и прочитайте ключ CFBundleDocumentTypes.

+0

Pitfall: CFBundleDocumentTypes словари не всегда будут иметь список типов контента. В этом случае вам придется проходить через другие типы словарей (расширения имен файлов, OSTypes и т. Д.) И искать UTI для них. –

0

Launch Services - твой друг. Но я не думаю, что есть API, который получает UTI, поддерживаемые данным приложением, поэтому я бы предложил вам использовать то, что вы уже описали, к сожалению.