2009-05-31 22 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);