如何获取Finder“在应用程序中打开”对话框中显示的目标文件格式(或文件)的应用程序列表?

时间:2016-09-11 12:09:33

标签: swift macos finder file-association

我需要获取与特定文件格式兼容的应用程序列表(与在Finder中为特定文件打开时显示的相同)。

首先尝试了函数“LSCopyAllRoleHandlersForContentType”,但不是所有的应用程序(通常是完全空列表)。只有在Finder中至少一次使程序成为文件格式的默认值时,程序才会出现在此列表中。

然后我尝试从Info.plist应用程序获取有关文件关联格式的信息(使用“CFBundleDocumentTypes”键)。但是例如对于“png”我只得到浏览器&没有Sketch,Skitch,Photoshop等应用程序。

也许我错过了什么......先谢谢。

1 个答案:

答案 0 :(得分:1)

可能是因为你的路径无效:

// don't include file://
let url = NSURL.fileURL(withPath: "file:///Users/xxx/Desktop/public.html")

这对我有用:

let url = URL(fileURLWithPath: "/Users/xxx/Desktop/public.html") as CFURL

if let applicationURLs = LSCopyApplicationURLsForURL(url, .all)?.takeRetainedValue() {
    print(applicationURLs)
}