У меня есть приложение, и я читаю в адресной книге информацию с помощью API ABAddressBook и выбора человека. Я хотел бы предоставить ссылку из своего приложения, чтобы запустить адресную книгу Mac и предварительно выбрать конкретного пользователя.Как запустить Mac Address Book из своего приложения и выбрать конкретного человека?
Я уверен, что есть несколько способов сделать это - я придумал тот, который, похоже, работает, но он чувствует себя немного неуклюжим. Я запускаю «Address Book.app», в случае успеха он вызывает немного AppleScript для выбора уникального идентификатора «currentPerson» (из объекта ABRecord).
- (void) notifyABSelect
{
NSString *src = [NSString stringWithFormat:@"tell application \"Address Book\"\r\n\tset selection to first person whose id is \"%@\" \r\nend tell", [currentPerson uniqueId]];
NSMutableDictionary *err = [NSMutableDictionary dictionary];
NSAppleScript *script = [[NSAppleScript alloc] initWithSource:src];
[script executeAndReturnError:&err];
[[[NSWorkspace sharedWorkspace] notificationCenter] removeObserver:self];
[src release];
[err release];
[script release];
}
- (IBAction) launchAddressBook:(id)sender
{
[[[NSWorkspace sharedWorkspace] notificationCenter]
addObserver:self
selector:@selector(notifyABSelect)
name:NSWorkspaceDidLaunchApplicationNotification
object:nil];
if ([[NSWorkspace sharedWorkspace] launchApplication:@"Address Book.app"] == YES)
{
[self notifyABSelect];
}
else
{
NSLog(@"Unable to launch address book");
}
}
В том случае, если это падение, если в адресной книге ранее была выбрана группа, отличная от «Все контакты»; он может или не может найти человека в зависимости от того, находятся ли они в выбранной группе. Однако, щелкнув ссылку второй раз в приложении, правильно перейдите в «Все контакты» и найдите человека.
Каковы альтернативы для достижения такого поведения?
Спасибо, Николас - видимо, мне нравится делать что-то трудное. :) Работает как шарм. – Eric