测试应用程序是否可以打开特定类型?

问题描述:

在Mac OS X上,如何判断给定应用程序是否打开特定类型?测试应用程序是否可以打开特定类型?

我有两个我感兴趣的UTI:public.text和public.image,我有一个应用程序列表。我想通过这两种类型过滤列表,所以我有一个文本查看器列表和图像查看器列表。

我在SO上看到了一个相关的问题,它可以获得特定文档类型的所有查看者列表。我可以做到这一点,并获得该集合的交集,但我宁愿能够单独询问每个应用程序。

有没有任何可可或碳的要求?

如果您需要给定文档类型的应用程序列表,请使用LSCopyAllRoleHandlersForContentType

如果您需要特定应用程序的文档类型列表,请打开应用程序的Info.plist文件并阅读CFBundleDocumentTypes密钥。

+0

陷阱:CFBundleDocumentTypes字典并不总是具有内容类型的列表。在这种情况下,您需要查看每个字典的其他类型(文件扩展名,OSType等)并查找它们的UTI。 – 2010-01-23 07:35:03

Launch Services是你的朋友。但我不认为有任何API可以获得给定应用程序支持的UTI,所以我建议你不幸使用你已经描述的内容。