问题标签 [launch-services]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
807 浏览

macos - 列出可以打开文件的潜在应用程序

是否可以获得安装在用户计算机上可用于打开文件(在我的情况下为图像)的应用程序列表,类似于通过 Finder 的“打开方式...”菜单显示的列表?

0 投票
4 回答
10617 浏览

safari - 无论系统浏览器设置为什么,都使用 Safari 打开 URL

在我的 Objective-C 程序中,无论系统的默认浏览器是什么,我都需要在 Safari 中打开一个 URL。这意味着这不起作用,因为它可以启动 Firefox 或任何其他浏览器:

我想我很接近这个:

只需要弄清楚如何将URL作为参数传递......有没有更简单的方法?

谢谢!

更新:以下代码使用我想要的 URL 启动 Safari,但 Safari 立即终止!任何想法为什么会这样?

我观察到相同的行为LSOpenFromURLSpec。如果 Safari 实例正在运行,它工作正常。如果没有 Safari 实例正在运行,它会启动一个新实例并立即终止它。

更新 2: Safari 仅在嵌入了 Flash 的网站上崩溃。使用上面的代码,我可以很好地打开 google.com,但是例如,Safari 会因 YouTube 视频而崩溃。

0 投票
3 回答
3612 浏览

objective-c - 从代码为 Mac OS X 上的给定文件扩展名设置默认应用程序

我有给定文件扩展名的应用程序列表(使用 LSCopyApplicationURLsForURL)。从上述调用中选择一个应用程序后,我想从代码中更改默认文件关联。有没有办法做到这一点?

0 投票
2 回答
1429 浏览

macos - 给定一个 UTI(统一类型标识符),找到它符合的所有类型

我正在编写一个使用Uniform Type Identifiers的应用程序。具体来说,我正在调用UTTypeCreateAllIdentifiersForTag()并传递各种MIME类型。

我希望这个函数(不同于UTTypeCreatePreferredIdentifierForTag())会给我最具体的 UTI 以及它符合的所有 UTI。情况似乎并非如此——它要么返回单个 UTI,要么次要 UTI 是虚假的。

在同一个头文件中定义了该UTTypeConformsTo()函数,但我更喜欢一个函数,该函数返回该 UTI 符合的所有类型的数组。

我似乎有希望,因为MDItemCopyAttributeList()将返回这样的列表。也就是说,它需要一个MDItemRef,它可以从文件路径或 URL 创建——这不是很好。有时我的数据只存储在内存中,我只有一个 MIME 类型可供使用。

我是否必须遍历整个 UTI 数据库才能获取此信息,还是我遗漏了什么?

0 投票
1 回答
120 浏览

cocoa - 在 Cocoa 中启用“文件名已从互联网下载...”提示

我有一个从我的服务器下载 ZIP 文件的应用程序,并且可以从其他服务器下载插件。在能够打开这些文件之前,我想介绍一个经典的“文件名.html”是从互联网下载的(文件类型)。您确定要打开它吗?”首次尝试打开文件时的消息,就像 Google Chrome 在您保存 HTML 文件并尝试打开它时所做的那样: 在此处输入图像描述

我读过这是通过设置一个特殊的文件属性来启用的,但我不完全确定它是什么属性,以及如何在这些文件上设置它。

0 投票
1 回答
198 浏览

cocoa - 使用启动服务时如何获取文件名

我注册我的应用程序:

但另一方面,我怎样才能获得 finder 发送到我的应用程序的文件名?我应该设置什么机制来获取文件名?有没有关于这个问题的文件?

0 投票
1 回答
972 浏览

macos - 您可以动态地将 CFBundleDocumentTypes 分配给您的 Cocoa 应用程序吗?

您可以动态地将 CFBundleDocumentTypes 分配给您的 Cocoa 应用程序吗?这意味着在运行时我可以为我的应用程序分配更多的扩展来处理。

目前,我为我的应用程序设置了一些扩展,以使用 Info.plist 中的 CFBundleDocumentTypes 来处理,但我想在应用程序执行时(在运行时)通过代码来执行此操作。基本上我可以在不修改 Info.plist 文件的情况下让 Launch Services 了解新的扩展。

谢谢。

0 投票
3 回答
4172 浏览

macos - 如何找到具有相同捆绑标识符的多个应用程序?

有谁知道找到(在文件系统中)具有给定捆绑标识符的每个应用程序的好方法?NSWorkspace和启动服务让您可以通过捆绑标识符查找应用程序,但只返回一个结果。我怀疑 Spotlight ( NSMetadataQuery) 可能会有所帮助,但我对它的 API 有点不清楚,所以我不确定是否有合适的密钥。

有命令行lsregister工具(在 LaunchServices.framework 中),可以告诉它(重新)注册系统上的所有内容,然后转储它所知道的所有内容的报告。依赖它似乎不太理想,因为它没有记录并且解析它的输出可能会很痛苦。

(背景:我正在构建一个用于游戏改装的应用程序,并希望提供 UI 以便从支持的游戏的简短列表中快速选择,而不是要求用户在打开面板中挖掘整个文件系统。但是,我希望它相当用户可能安装了多个游戏副本:发行版和测试版、用于修改的额外副本等)

0 投票
2 回答
171 浏览

macos - LSGetApplicationForItem 的逆

我正在编写一个图像查看器应用程序,我需要将其设置为 jpeg/gif 文件的默认应用程序。有一个 API LSGetApplicationForItem/Info 用于获取有关默认应用程序的信息。但是我找不到可以将我的应用程序设置为图像文件的默认查看器的 API。

你能帮忙吗

0 投票
3 回答
17430 浏览

ios - 为什么我的 iOS 应用没有显示在其他应用的“打开方式”对话框中?

我正在尝试实现允许我的 iOS 应用程序显示在其他应用程序的“打开方式”列表中的注册过程(如Apple 的文档交互编程主题中所述)。我希望我的应用程序能够处理来自任何提供标准音频文件格式(MP3、AIFF、WAV 等)的应用程序的音频。

据我了解,我需要做的就是将CFBundleDocumentTypes带有相关子数据的密钥添加到我的应用程序的 Info.plist 中。这就是我输入的内容(通过 Xcode 4 的文档类型编辑器):

添加此代码未在应用程序的“打开方式”菜单中显示我的应用程序(我正在 iPhone 上进行测试,使用 Dropbox 中的 MP3 作为文件源。应用程序 AudioMemos 和 Evernote 都显示为 Dropbox 中的 MP3 文件,所以我知道支持格式)。有什么明显的我做错了,还是我需要实施其他什么?

(注意:我没有在我的 Info.plist 中设置一个UTExportedTypeDeclarations项目,因为我知道这些仅对自定义 UTI 是必需的。由于我使用的是系统 UTI,我认为这不是必需的,但如果我有请纠正我我错了。)

编辑

我添加了以下导出类型 UTI,但没有成功: