Учитывая путь к приложению (или NSBundle
к приложению и т. Д.), Существует ли способ легко / эффективно определить, какие типы контента может открыть это приложение?
Первоначально я попытался прочитать файл Info.plist приложения и извлечь типы контента, перечисленные под ключом kUTExportedTypeDeclarationsKey
. Однако у этого подхода есть некоторые недостатки, которые я не смог обойти.
- Не все приложения используют этот ключ. Например, BBEdit не делает, но вместо этого перечисляет целую кучу распознанных расширений файлов.
- ИМП чувствительны к регистру. Страницы, например, перечисляют
com.apple.iWork.Pages.pages
в качестве экспортируемого типа контента, однако ни в одном документе Страницы этот тип не указан в его дереве типов контента. В документах используется com.apple.iwork.pages.pages
, который определяется генератором быстрого просмотра iWork (на /Library/QuickLook/iWork.qlgenerator
).
Знаю, что с некоторыми функциями LaunchServices (LSCopyApplicationURLsForURL()
, LSCopyApplicationForMIMEType()
и т. Д.) Я могу получить приложения, которые могут открывать файл (или тип файла), но я бы хотел сделать обратное , (Возможно, мне придется прибегнуть к разбору вывода lsregister -dump
?)
Возможно, более простой способ сформулировать вопрос был бы следующим: для приложения, какой самый простой способ найти все файлы, которые оно может открыть, для данного приложения?
Есть предложения?