如何從本地應用程序枚舉OS X系統上安裝的瀏覽器。我想建立一些喜歡挑剔,但不同(長話短說)。但是,我想枚舉系統上安裝的所有瀏覽器。枚舉OS X上已安裝的瀏覽器
在Windows上,我可以潛安裝的瀏覽器在默認程序登記,但是,我不相信這是在OS X上類似的概念我必須通過所有的包&他們的info.plist手動搜索文件?
如何從本地應用程序枚舉OS X系統上安裝的瀏覽器。我想建立一些喜歡挑剔,但不同(長話短說)。但是,我想枚舉系統上安裝的所有瀏覽器。枚舉OS X上已安裝的瀏覽器
在Windows上,我可以潛安裝的瀏覽器在默認程序登記,但是,我不相信這是在OS X上類似的概念我必須通過所有的包&他們的info.plist手動搜索文件?
使用LSCopyAllHandlersForURLScheme(CFSTR("http"))
或LSCopyAllRoleHandlersForContentType(CFSTR("public.html"), kLSRolesViewer)
或setintersection兩者。
這兩個函數返回包標識符;您可以使用LSFindApplicationForInfo
通過其包標識符在應用程序的磁盤上查找首選實例。
(不要忘了跟隨the Core Foundation memory-management rules)
編輯:在對這一答案評論,smorgan表明LSCopyAllHandlersForURLScheme(CFSTR("https"))
(這是HTTP 小號)來替代第一個電話。這是一個很好的建議。
選中此列出
NSArray* apps = (NSArray*)CFBridgingRelease(LSCopyAllHandlersForURLScheme(CFSTR("https"))) ;
NSLog(@"%@", apps);
此默認:
NSString* defaultBundleId = (__bridge NSString*)LSCopyDefaultHandlerForURLScheme(CFSTR("https"));
NSLog(@"default is %@", defaultBundleId);
我發現這些都是碳的API。我認爲碳被棄用? – 2009-05-31 04:51:44