FinderSync检查是否选择了扩展名

时间:2015-10-05 08:46:49

标签: objective-c macos system-preferences findersync

我正在开发FinderSync扩展程序,我在检查选择是否正在选择,或选择/取消选择扩展程序时遇到一些问题。

有没有办法以编程方式检查FinderSync中是否选择了System Preferences->Extensions扩展程序?

当此选择发生变化时,是否有任何API可以获得通知?

除了使用以下内容之外,是否有任何API可以选择/取消选择扩展程序?

system("pluginkit -e use -i com.mycompany.finderExt")

请注意,我已访问过这些页面:

How to enable FinderSync Extension in the System Preference in Cocoa - Objective C

OSX Finder Sync Extension

3 个答案:

答案 0 :(得分:8)

pluginkit -m -A -i com.mycompany.finderExt

如果启用了分机,则呼叫将返回

" + com.mycompany.finderExt(1)"

如果未启用分机,则呼叫将返回

" - com.mycompany.finderExt(1)"

注意加号和减号,只需解析返回以确定扩展是否已启用。

答案 1 :(得分:1)

macOS 10.14 Mojave为扩展管理添加了两种有用的新方法:

  

承载Finder同步扩展程序的应用程序可以确定用户是否已启用扩展程序,并可以显示用于管理扩展程序的UI。当应用程序再次激活时,它可以检查用户是否启用了扩展。

@available(OSX 10.14, *)
open class var isExtensionEnabled: Bool { get }

@available(OSX 10.14, *)
open class func showExtensionManagementInterface()

答案 2 :(得分:-1)

FinderSync扩展是一个"应用程序",确切地说。但它的包名为.appex。 在“系统偏好设置”中启用它时,macOS会自动加载它 (您可以通过Activity app或ps -ef命令检查)

因此,您可以通过以下代码轻松检查:

runningApps = [[NSRunningApplication runningApplicationsWithBundleIdentifier:@"your.bundle.id"] retain];
if runningApps.count != 0{
  //your extension was enabled
}
else{
 //your extension was not enabled
}