我需要获取与特定文件格式兼容的应用程序列表(与在Finder中为特定文件打开时显示的相同)。
首先尝试了函数“LSCopyAllRoleHandlersForContentType”,但不是所有的应用程序(通常是完全空列表)。只有在Finder中至少一次使程序成为文件格式的默认值时,程序才会出现在此列表中。
然后我尝试从Info.plist应用程序获取有关文件关联格式的信息(使用“CFBundleDocumentTypes”键)。但是例如对于“png”我只得到浏览器&没有Sketch,Skitch,Photoshop等应用程序。
也许我错过了什么......先谢谢。
答案 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)
}