给定应用程序路径(或NSBundle
到应用程序等),有没有办法轻松/有效地确定应用程序可以打开哪些内容类型?
我最初的尝试是阅读应用程序的Info.plist文件并提取kUTExportedTypeDeclarationsKey
项下列出的内容类型。但是,这种方法存在一些缺陷,我无法解决这些问题。
com.apple.iWork.Pages.pages
列为导出的内容类型,但实际上没有Pages文档在其内容类型树中列出该类型。文档使用com.apple.iwork.pages.pages
,它由iWork quicklook生成器(/Library/QuickLook/iWork.qlgenerator
)定义。知道使用一些LaunchServices函数(LSCopyApplicationURLsForURL()
,LSCopyApplicationForMIMEType()
等),我可以获得可以打开文件(或文件类型)的应用程序,但我想要做反过来。 (也许我不得不求助于解析lsregister -dump
的输出?)
或许用一种更简单的方式来表达问题:给定一个应用程序,找到它可以打开的所有文件的最简单方法是什么?
有什么建议吗?
答案 0 :(得分:1)
查看LaunchServices和提供的LSCanRefAcceptItem() API。
答案 1 :(得分:0)
似乎使用LSItemContentTypes键是10.4之后的首选方法。