Я пытаюсь получить список приложений, которые способны к открытию типа файла. До сих пор я смог получить название единственного использования приложения NSWorkspace
getInfoForFile:application:type:
метод.
Есть ли какой-либо API, который я могу назвать для получения списка приложений, способных к открытию файла?
Думаю, вам нужно будет воспользоваться Службой Запуска, чтобы получить список. LSCopyApplicationURLsForURL "Найдены все известные приложения, подходящие для открытия пункта, обозначенного URL."
Кажется, если вы передаете в URL файла, вы должны получить ваш (CFArrayRef) список приложений.
.Для дальнейшего использования, я был специально заинтересован в получении списка приложений, способных открыть определенный тип документа. Принятый ответ указал в правильном направлении, но не является полным решением, как LSCopyApplicaionURLsForURL
и его брат и сестра LSCopyAllRoleHandlersForContentType
вернуть идентификатор пакета, а не само приложение. Поэтому мне все равно нужно было:
Ниже приведен код, который я использовал для получения всей этой информации:
NSArray* handlers = LSCopyAllRoleHandlersForContentType(@"com.adobe.pdf", kLSRolesAll);
for (NSString* bundleIdentifier in handlers) {
NSString* path = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier: bundleIdentifier];
NSString* name = [[NSFileManager defaultManager] displayNameAtPath: path];
NSImage* icon = [[NSWorkspace sharedWorkspace] iconForFile: path];
}