Перечисление установленных браузеров в OS X - PullRequest
7 голосов
/ 31 мая 2009

Как можно перечислить установленные браузеры в системе OS X из локального приложения. Я хотел бы построить что-то вроде привередливого, но другого (длинная история). Однако я хотел бы перечислить все установленные браузеры в системе.

В Windows я могу погрузить установленные браузеры в реестры программ по умолчанию, однако я не верю, что в OS X существует аналогичная концепция. Нужно ли вручную искать все пакеты и их файлы info.plist ?

Ответы [ 2 ]

9 голосов
/ 31 мая 2009

Используйте LSCopyAllHandlersForURLScheme(CFSTR("http")) или LSCopyAllRoleHandlersForContentType(CFSTR("public.html"), kLSRolesViewer) или set пересечение обоих.

Эти две функции возвращают идентификаторы пакета; Вы можете использовать LSFindApplicationForInfo, чтобы найти предпочтительный экземпляр на диске приложения по его идентификатору пакета.

(Не забывайте следовать правилам управления памятью Core Foundation .)

Редактировать: в комментарии к этому ответу сморган предлагает LSCopyAllHandlersForURLScheme(CFSTR("https")) (это http s ) в качестве альтернативы первому вызову. Это хорошее предложение.

0 голосов
/ 20 февраля 2017

Отметьте это в списке

NSArray* apps = (NSArray*)CFBridgingRelease(LSCopyAllHandlersForURLScheme(CFSTR("https"))) ;
NSLog(@"%@", apps);

Это по умолчанию:

NSString* defaultBundleId = (__bridge NSString*)LSCopyDefaultHandlerForURLScheme(CFSTR("https"));
NSLog(@"default is %@", defaultBundleId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...