我有给定文件扩展名的应用程序列表(使用LSCopyApplicationURLsForURL).我想在从上面的调用中选择一个应用程序时从代码更改默认文件关联.有没有办法做到这一点?
是否有可能获得用户计算机上安装的可用于打开文件的应用程序列表(在我的例子中是一个图像),类似于通过Finder的"打开方式..."菜单显示的列表?
当我学会了如何自己启动NSApplications时,我使用的代码(基于此处和此处)完成了
[NSApp activateIgnoringOtherApps:YES];
Run Code Online (Sandbox Code Playgroud)
这会在启动时强制应用程序到前端.
我想知道大多数其他应用程序的功能.我希望能够直接从二进制文件和应用程序包中运行程序,而且我没有使用Xcode来构建它(原始构建).所以我可以自然而然地说这种行为.
文档确实说Finder问题NO,但是......为什么Finder?这不是一个从流程内部运行的方法,而不是外部的方法吗?(我无法控制选择.)那么Dock和其他可能的切入点呢?
我甚至竟然拆解10.8 NSApplicationMain()来看看它做了什么,但据我所知,从32位版本开始,除非这个"轻启动"事情发出这个选择器,否则这个选择器永远不会被调用.
这个问题有答案吗?谢谢......如果这令人困惑,我很抱歉; 我试着尽可能清楚地说出来.
这个答案说要使用过去运行良好的LSCopyKindStringForURL(),但它在OS X v10.11中被标记为"已弃用".
API文档中没有提到它被弃用的原因.我根本没有在OS X 10.11发行说明中看到任何启动服务API更改.
你现在应该如何获得Finder种类的文件?