2009-05-31 57 views
7

如何從本地應用程序枚舉OS X系統上安裝的瀏覽器。我想建立一些喜歡挑剔,但不同(長話短說)。但是,我想枚舉系統上安裝的所有瀏覽器。枚舉OS X上已安裝的瀏覽器

在Windows上,我可以潛安裝的瀏覽器在默認程序登記,但是,我不相信這是在OS X上類似的概念我必須通過所有的包&他們的info.plist手動搜索文件?

回答

9

使用LSCopyAllHandlersForURLScheme(CFSTR("http"))LSCopyAllRoleHandlersForContentType(CFSTR("public.html"), kLSRolesViewer)setintersection兩者。

這兩個函數返回包標識符;您可以使用LSFindApplicationForInfo通過其包標識符在應用程序的磁盤上查找首選實例。

(不要忘了跟隨the Core Foundation memory-management rules

編輯:在對這一答案評論,smorgan表明LSCopyAllHandlersForURLScheme(CFSTR("https"))(這是HTTP 小號)來替代第一個電話。這是一個很好的建議。

+0

我發現這些都是碳的API。我認爲碳被棄用? – 2009-05-31 04:51:44

0

選中此列出

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

此默認:

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