2015-10-05 11 views
5

Я разрабатываю расширение 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

+0

Насколько я знаю, ответы на ваши вопросы - нет, нет и нет. Я бы с радостью доказал, что ошибаюсь. – dejuknow

+0

Зачем вам нужно проверить, не выбрано ли оно? Почему бы не насильственно выбирать его время от времени? Почему команда pluginkit вас беспокоит? – Mugen

+0

Одна из возможностей, которую я должен реализовать, - установить флажок в диалоговом окне настроек приложения, чтобы пользователь мог включить/отключить расширение Finder, и этот параметр должен быть синхронизирован с выбором из System Preferences-> Extensions. Я мог бы сделать это так, как вы сказали, но если пользователь хочет отключить мое расширение из системных настроек, я не хочу отменять его действие. Кроме того, я могу сделать два флажка из синхронизации довольно легко. На данный момент я просто показываю кнопку, и при нажатии на нее перенаправляет пользователя в префикс расширения. – ciprian

ответ

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

Если расширение включено, то вызов будет возвращать

«+ com.mycompany.finderE х (1)»

Если расширение не включен, то вызов будет возвращать

"- com.mycompany.finderExt (1)"

Обратите внимание на знаки плюс и минус, просто проанализируйте возврат, чтобы определить, включено ли расширение.

0

Расширение FinderSync - это «приложение», точно. но его пакет называется .appex. , когда вы включите его в настройках системы, MacOS будет загружаться автоматически (вы можете проверить приложение активность или -ef команды пс)

Таким образом, вы можете легко проверить это какой-то код, как:

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