2013-08-01 3 views
0

Comment puis-je obtenir les coordonnées de l'iPad et l'utiliser dans mon application. J'utilise le code suivant et j'obtiens les détails du simulateur. Mais tout en courant dans l'IPAD je ne reçois pas l'image de contact, l'email etc. J'obtiens le numéro de téléphone correctement.détails de contact de l'ipad en utilisant l'objectif-c

ABAddressBookRef addressBook = ABAddressBookCreate(); 

// Get all contacts in the addressbook 
NSArray *allPeople = (__bridge NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook); 

for (id person in allPeople) { 
    // Get all phone numbers of a contact 
    ABMultiValueRef phoneNumbers = ABRecordCopyValue((__bridge ABRecordRef)(person), kABPersonPhoneProperty); 
    ABMultiValueRef emailaddress = ABRecordCopyValue((__bridge ABRecordRef)(person), kABPersonEmailProperty); 


    // If the contact has multiple phone numbers, iterate on each of them 
    for (int i = 0; i < ABMultiValueGetCount(phoneNumbers); i++) { 
     NSString *phone = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, i); 



     // Remove all formatting symbols that might be in both phone number being compared 
     NSCharacterSet *toExclude = [NSCharacterSet characterSetWithCharactersInString:@"/.()- +"]; 
     phone = [[phone componentsSeparatedByCharactersInSet:toExclude] componentsJoinedByString: @""]; 


     if ([phone isEqualToString:number]) { 

      NSData *contactImageData = (__bridge NSData*)ABPersonCopyImageData((__bridge ABRecordRef)(person)); 
      NSString *mail = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(emailaddress, i); 
      NSLog(@"%@",mail); 
      if(mail) 
      { 
       hasEmail=TRUE; 
       NSLog(@"true"); 
      } 
      else{ 
       hasEmail=FALSE; 
       NSLog(@"false"); 
      } 

      ContactImage = [[UIImage alloc] initWithData:contactImageData]; 
      // [conImage setImage:ContactImage]; 

      break; 
      break; 
     } 
    } 
} 
if(ContactImage) 
{ 
    [conImage setImage:ContactImage]; 
} 
else{ 

    NSLog(@"no image"); 
} 

J'ai besoin pour obtenir l'image en cours d'exécution sur ipad

Répondre

0

Vous pouvez mettre en œuvre ce code à la méthode ViewDidLoad.

ABAddressBookRef addressBook; 
if ([self isABAddressBookCreateWithOptionsAvailable]) { 
    CFErrorRef error = nil; 
    addressBook = ABAddressBookCreateWithOptions(NULL,&error); 
    ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { 
     // callback can occur in background, address book must be accessed on thread it was created on 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      if (error) { 

      } else if (!granted) { 


      } else { 
       // access granted 
       [self GetAddressBook]; 


      } 
     }); 
    }); 

} else { 
    // iOS 4/5 

    [self GetAddressBook]; 
} 

Méthode Pour obtenir les contacts: -

-(void)GetAddressBook 
{ 
    Contacts = [[NSMutableArray alloc]init]; 

    if (ABAddressBookCreateWithOptions) { 

    @try { 

     ABAddressBookRef addressBook = ABAddressBookCreate(); 
     // NSArray *people = (NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook); 
     if (!addressBook) { 
      NSLog(@"opening address book"); 
     } 
     CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); 
     CFIndex nPeople = ABAddressBookGetPersonCount(addressBook); 

     NSLog(@"opening address book ==%ld",nPeople); 

     for (int i=0;i < nPeople;i++) { 

      NSMutableDictionary *dOfPerson=[NSMutableDictionary dictionary]; 
      ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i); 
      NSString *Contact; 
      ABMultiValueRef phones =(__bridge ABMultiValueRef)((__bridge NSString*)ABRecordCopyValue(ref, kABPersonPhoneProperty)); 
      CFStringRef firstName, lastName; 
      NSMutableArray *array = [[NSMutableArray alloc]init]; 
      NSString *email; 
      firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty); 
      lastName = ABRecordCopyValue(ref, kABPersonLastNameProperty); 
      ABMultiValueRef multiValueRef = ABRecordCopyValue(ref, kABPersonEmailProperty); 
      array = [(__bridge NSMutableArray *)ABMultiValueCopyArrayOfAllValues(multiValueRef) mutableCopy]; 
      email = ([array count] > 0) ? array[0] : @""; 

      if(firstName) 
      { 
       Contact = [NSString stringWithFormat:@"%@", firstName]; 
       if(lastName) 
        Contact = [NSString stringWithFormat:@"%@ %@",firstName,lastName]; 
      } 
      [dOfPerson setObject:Contact forKey:@"name"]; 
      [dOfPerson setObject:[NSString stringWithFormat:@"%d", i] forKey:@"id"]; 
      [dOfPerson setObject:[NSString stringWithFormat:@"%@",@""] forKey:@"found"]; 
      [dOfPerson setObject:email forKey:@"email"]; 

      NSString* mobileLabel; 
      for(CFIndex j = 0; j< ABMultiValueGetCount(phones); j++) 
      { 
       mobileLabel = (__bridge NSString*)ABMultiValueCopyLabelAtIndex(phones, j); 
       if([mobileLabel isEqualToString:(NSString *)kABPersonPhoneMobileLabel]) 
       { 
        [dOfPerson setObject:(__bridge NSString*)ABMultiValueCopyValueAtIndex(phones, j) forKey:@"Phone"]; 
       } 
       else if ([mobileLabel isEqualToString:(NSString*)kABPersonPhoneIPhoneLabel]) 
       { 
        [dOfPerson setObject:(__bridge NSString*)ABMultiValueCopyValueAtIndex(phones, j) forKey:@"Phone"]; 
        break ; 
       } 
      } 
      [Contacts addObject:dOfPerson]; 
     } 
    } 
    @catch (NSException * e) { 
     NSLog(@"Exception: %@", e);   
    } 
    dispatch_async(dispatch_get_main_queue(), ^{   

    }); 

    NSLog(@"%@",Contacts); 
    if([Contacts count]>0) 
    { 
     NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; 
     [Contacts sortUsingDescriptors:[NSArray arrayWithObject:sort]]; 
     [Tableview reloadData]; 
    } 
    else 
    { 

    } 
} 
else 
{ 
    [self GetAddressBook]; 
} 
} 

Ici Contacts est un NSMutableArray et toutes les données est affiché dans un UITableView. Ces données comprennent le prénom, le nom, le numéro de téléphone et l'adresse électronique. J'espère que cela aide.

+0

mon codage fonctionne correctement. Mais tout en utilisant ipad je ne reçois pas l'image et l'adresse e-mail qui est le seul problème – priya

+0

De ce que vous pouvez obtenir l'email ID ..... – IronManGill

+0

mais l'image? j'ai besoin d'image – priya

Questions connexes