2009-05-31 13 views
7

W jaki sposób można wyliczyć zainstalowane przeglądarki w systemie OS X z aplikacji lokalnej. Chciałbym zbudować coś w rodzaju wybrednego, ale innego (długa historia). Chciałbym jednak wyliczyć wszystkie zainstalowane przeglądarki w systemie.Wyliczanie zainstalowanych przeglądarek w systemie OS X

W systemie Windows mogę zanurkować zainstalowane przeglądarki w rejestrach domyślnych programów, jednak nie wierzę, że istnieje podobna koncepcja na OS X. Czy muszę ręcznie przeszukiwać wszystkie pakiety & ich info.plist akta?

Odpowiedz

9

Użyj LSCopyAllHandlersForURLScheme(CFSTR("http")) lub lub setobu.

Te dwie funkcje zwracają identyfikatory pakietów; możesz użyć LSFindApplicationForInfo, aby znaleźć preferowaną instancję na dysku aplikacji za pomocą swojego identyfikatora pakunku.

(Nie zapomnij, aby śledzić the Core Foundation memory-management rules).

Edit: W komentarzu do tej odpowiedzi, smorgan sugeruje LSCopyAllHandlersForURLScheme(CFSTR("https")) (to http s) jako alternatywa dla pierwszego połączenia. To jest dobra sugestia.

+0

Zauważyłem to API węgla. Myślałem, że Carbon jest przestarzały? –

+3

Usługi uruchamiania są częścią usług podstawowych, a nie karbonowych. Jako taki nie jest przestarzały i jest dostępny w wersji 64-bitowej. (Zobacz dokumentację: http://developer.apple.com/documentation/Carbon/Reference/LaunchServicesReference/) –

+2

Możesz chcieć użyć "https" zamiast "http", ponieważ z mojego doświadczenia wynika, że ​​ten drugi ma więcej fałszywych alarmów dla rzeczy, które są naprawdę przeglądarkami. – smorgan

0

Sprawdź to do listy

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

to za domyślnie:

NSString* defaultBundleId = (__bridge NSString*)LSCopyDefaultHandlerForURLScheme(CFSTR("https")); 
NSLog(@"default is %@", defaultBundleId); 
Powiązane problemy