Je fais une application iPhone dans Xcode qui nécessite l'accès au répertoire téléphonique. J'ai besoin de tous les numéros de téléphone du carnet d'adresses et cela devrait être stocké dans un NSArray
.Numéros de téléphone du carnet d'adresses iPhone
1
A
Répondre
0
Try this,
NSMutableArray *phoneNumbers = [[NSMutableArray alloc] init];
ABMultiValueRef multiPhones = ABRecordCopyValue(person,kABPersonPhoneProperty);
for(CFIndex i=0;i<ABMultiValueGetCount(multiPhones);++i) {
CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(multiPhones, i);
NSString *phoneNumber = (NSString *) phoneNumberRef;
[phoneNumbers addObject:phoneNumber];
}
2
//Also you need to include AddressBook.framework
#import <AddressBook/AddressBook.h>
#import <AddressBook/ABAddressBook.h>
#import <AddressBook/ABPerson.h>
[contactList removeAllObjects];
// open the default address book.
ABAddressBookRef m_addressbook = ABAddressBookCreate();
if (!m_addressbook) {
NSLog(@"opening address book");
}
// can be cast to NSArray, toll-free
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(m_addressbook);
CFIndex nPeople = ABAddressBookGetPersonCount(m_addressbook);
// CFStrings can be cast to NSString!
for (int i=0;i < nPeople;i++) {
MContact *contact = [[MContact alloc] init];
ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i);
CFStringRef firstName, lastName;
firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
lastName = ABRecordCopyValue(ref, kABPersonLastNameProperty);
contact.name = [NSString stringWithFormat:@"%@ %@", firstName, lastName];
ABMutableMultiValueRef eMail = ABRecordCopyValue(ref, kABPersonEmailProperty);
if(ABMultiValueGetCount(eMail) > 0) {
contact.email = (NSString *)ABMultiValueCopyValueAtIndex(eMail, 0);
[contactList addObject:contact];
}
CFRelease(ref);
CFRelease(firstName);
CFRelease(lastName);
}
+0
de même, vous pouvez accéder aux numéros de téléphone –
0
Ce code pour Xcode 4.5.1> = 0, si si vous avez la version ci-dessous alors pas besoin d'écrire si la condition. Affectez simplement ABAddressBookCreate()
au carnet d'adresses.
__block BOOL accessGranted = NO;
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) {
NSLog(@"Device version is greater than 6.0");
addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
if (ABAddressBookRequestAccessWithCompletion != NULL) { // we're on iOS 6
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
accessGranted = granted;
dispatch_semaphore_signal(sema);
});
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
}
}
else{
addressBook = ABAddressBookCreate();
accessGranted = YES;
}
if (accessGranted) {
NSMutableArray *phoneNumbers = [[NSMutableArray alloc] init];
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
for (CFIndex i = 0; i < CFArrayGetCount(people); i++) {
ABRecordRef person = CFArrayGetValueAtIndex(people, i);
NSString *name = (__bridge NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
ABMultiValueRef multiPhones = ABRecordCopyValue(person,kABPersonPhoneProperty);
NSMutableArray *individualPhoneNumbers = [[NSMutableArray alloc] init];
if (ABMultiValueGetCount(multiPhones) >0) {
for(CFIndex i=0;i<ABMultiValueGetCount(multiPhones);++i) {
CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(multiPhones, i);
NSString *phoneNumber = (__bridge NSString *) phoneNumberRef;
[individualPhoneNumbers addObject:phoneNumber];
}
[phoneNumbers addObject:individualPhoneNumbers];
}
}
Questions connexes
- 1. Récupérer tous les numéros de téléphone du carnet d'adresses
- 2. Carnet d'adresses iPhone - Sélection automatique du propriétaire du téléphone
- 3. carnet d'adresses récupération des numéros de téléphone problèmes
- 4. Carnet d'adresses iPhone: Comment obtenir une liste de contacts uniquement avec des numéros de téléphone?
- 5. iPhone sdk: Comment obtenir le compte de tous les numéros de téléphone dans un carnet d'adresses?
- 6. Nombre total de numéros de téléphone dans le carnet d'adresses iPhone
- 7. Erreur bizarre lors de la récupération des numéros de téléphone à partir du carnet d'adresses iPhone à l'aide de l'API
- 8. Obtenir les numéros de téléphone de Facebook synchronisés/Contacts du carnet d'adresses "Unified Info"
- 9. Traiter avec les numéros de téléphone internationaux sur iPhone
- 10. accident inattendu lors de l'utilisation des numéros de téléphone à la recherche dans le carnet d'adresses iPhone
- 11. Communication iPhone App utilisant des numéros de téléphone?
- 12. Carnet d'adresses Numéro de téléphone (+45) préfixe provoquant un accident!
- 13. NSDataDetector numéros de téléphone
- 14. Obtenir le numéro de téléphone du carnet d'adresses global
- 15. Possibilités d'exportation du carnet d'adresses IPhone db
- 16. Iphone, Adresse info du carnet d'adresses
- 17. Recherche de carnet d'adresses iPhone
- 18. Comment ajouter deux numéros de téléphone au carnet d'adresses en utilisant pyObjc?
- 19. stocker des numéros de téléphone
- 20. Accès aux informations de personnes dans le carnet d'adresses iPhone
- 21. Format de numéro de téléphone iPhone NSFormatter
- 22. Rédaction des numéros de téléphone
- 23. Extraire des numéros de téléphone
- 24. Carnet d'adresses iPhone - Adresses réelles
- 25. Carnet d'adresses + UITableView indexation iPhone
- 26. Carnet d'adresses iPhone ModalView Personnalisation
- 27. iPhone carnet d'adresses - Attire toujours du groupe par défaut
- 28. Comment obtenir tous les numéros de téléphone avec des étiquettes pour tous les contacts dans le carnet d'adresses?
- 29. Xcode carnet d'adresses montrer le nom complet au lieu du numéro de téléphone
- 30. Traiter les formats de numéros de téléphone
Check [Carnet d'adresses Guide de programmation pour iOS] (http://developer.apple.com/library/ios/#documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Introduction.html#//apple_ref/doc/uid/TP40007744). – iDev