Тестирование, может ли приложение открывать определенный тип?

Как в Mac OS X узнать, открывает ли данное приложение определенный тип?

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

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

Есть ли призывы Cocoa или Carbon к этому?


person Michael Bishop    schedule 23.01.2010    source источник


Ответы (2)


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

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

person Darren    schedule 23.01.2010
comment
Подводный камень: словари CFBundleDocumentTypes не всегда будут иметь список типов контента. В этом случае вам придется просматривать другие типы каждого словаря (расширения имен файлов, OSTypes и т. д.) и искать для них UTI. - person Peter Hosey; 23.01.2010

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

person Yuji    schedule 23.01.2010