【问题标题】:Testing if an application can open a specific type?测试应用程序是否可以打开特定类型?
【发布时间】:2010-01-23 06:36:11
【问题描述】:

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

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

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

是否有任何 Cocoa 或 Carbon 要求这样做?

【问题讨论】:

    标签: cocoa file-type uti


    【解决方案1】:

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

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

    【讨论】:

    • 陷阱:CFBundleDocumentTypes 字典并不总是有内容类型的列表。在这种情况下,您必须检查每个字典的其他类型(文件扩展名、OSTypes 等)并查找它们的 UTI。
    【解决方案2】:

    Launch Services 是你的朋友。但我认为没有任何 API 可以获取给定应用程序支持的 UTI,因此很遗憾,我建议您使用您已经描述的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多