ios - 是否可以以编程方式检索安装在 mac os 上的应用程序图标?
问题描述
public func getAllApplications() -> [NSMetadataItem] {
let fileManager = FileManager()
guard let applicationsFolderUrl = try? FileManager.default.url(for: .applicationDirectory, in: .localDomainMask, appropriateFor: nil, create: false) else { return [] }
let applicationUrls = try! fileManager.contentsOfDirectory(at: applicationsFolderUrl , includingPropertiesForKeys: [], options: [FileManager.DirectoryEnumerationOptions.skipsPackageDescendants, FileManager.DirectoryEnumerationOptions.skipsSubdirectoryDescendants])
guard let systemApplicationsFolderUrl = try? FileManager.default.url(for: .applicationDirectory, in: .systemDomainMask, appropriateFor: nil, create: false) else { return [] }
let utilitiesFolderUrl = NSURL.init(string: "\(systemApplicationsFolderUrl.path)/Utilities") as! URL
guard let utilitiesUrls = try? fileManager.contentsOfDirectory(at: utilitiesFolderUrl, includingPropertiesForKeys: [], options: [FileManager.DirectoryEnumerationOptions.skipsPackageDescendants, FileManager.DirectoryEnumerationOptions.skipsSubdirectoryDescendants]) else { return [] }
let urls = applicationUrls + utilitiesUrls
var applications = [NSMetadataItem]()
for url in urls {
print(url.path, fileManager.isExecutableFile(atPath: url.path))
if fileManager.isExecutableFile(atPath: url.path) {
guard let mdi = NSMetadataItem(url: url) else { continue }
applications.append(mdi)
}
}
for app in applications {
print(app.value(forAttribute: kMDItemDisplayName as String))
}
return applications
}
我能够检索使用上述代码安装的应用程序的名称,并且从这里我无法弄清楚如何检索图标图像。我找不到任何允许我检索图标信息的属性,或者我可能在错误的地方看到了。
任何形式的帮助表示赞赏。谢谢!
解决方案
推荐阅读
- javascript - 如何将多个事件侦听器和查询选择器组合到一个函数中?
- javascript - 如何使用数组和 Jquery 填充下拉列表
- java - 使用 SQLServerBulkCopy 将数据从 SQL Server 导出到 Azure 时出错
- python - Python在从元组打印索引时添加新行
- react-native - 使用 useCallback 测试 react-native
- python - 无法理解错误消息(Python 中的回归)
- android-studio - Android Studio 腐败怪异:打开完全错误的文件
- python - 隐藏从自定义 CLI 应用程序生成的 json 文件格式数据?
- javascript - 如何增加动物区的价值?使用 javascript 和服务器端函数
- javascript - 将数据追加到一个数组中,而不是使用多嵌套数组