Lançamento programático de aplicações
[[nsworkspace sharedspace] launchApplication:@ "fotos"] Funciona
[[nsworkspace sharedspace] launchApplication:@ "Contacts"] does not work
[[nsworkspace sharedWorkspace] launchApplication:@ " / Applications / Contacts.app"] funciona
(Mac OS Sierra)
Por isso, estava a pensar se há alguma forma segura de encontrar o caminho de aplicação "real". Talvez o aplicativo Contatos tem nomes diferentes em diferentes localizações do sistema ? Porque é que as" fotos " funcionam bem ?eu imagino que deve haver uma maneira, a partir de um identificador de Aplicação documentado da Apple para obter o caminho da aplicação, mas eu não encontrei nada.
2 answers
Lembre-se que launchApplication:
devolve um BOOL
se foi bem sucedido ou não.
URLForApplicationWithBundleIdentifier:
API, na qual pode ligar o ID da aplicação do contacto de com.apple.AddressBook
.
Com o resultado, você pode ligar para a localização explícita do aplicativo via:
A melhor maneira de abrir uma aplicação é a partir da localização do url do ficheiro. Eu fiz o mesmo para a minha aplicação como abaixo:
NSString *appPathIs = Url.path;
Tomo o caminho do url num texto e depois abro-o com o que indicou
[[NSWorkspace sharedWorkspace] launchApplication:appPathIs];
Tentei de todas as formas alcançar o mesmo, mas às vezes eles trabalham e outras vezes não. Se quiser experimentar outro, por favor, considere isto:
NSString *appPathIs = [[NSWorkspace sharedWorkspace] fullPathForApplication:appName];
NSString *identifier = [[NSBundle bundleWithPath:appPathIs] bundleIdentifier];
NSString *path = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:identifier];
[[NSWorkspace sharedWorkspace] launchApplication:appPathIs];