2012-03-16 14 views
5

Pracuję nad aplikacją, która musi odczytać kontakty z karty SIM. Wiem, że nie jest to możliwe przy użyciu oficjalnego zestawu Apple SDK. Pracuję nad tą aplikacją dla iPhone'ów jailbroken.Czytanie kontaktów SIM w jailbroken iPhone

Szukałem dużo, ale jedyna odpowiedź, jaką otrzymałem, NIE jest MOŻLIWA.

Każda pomoc na ścieżce zostanie doceniona.

+0

Chyba nie pojawia się słowo „jailbreak” w pytaniu .. –

+0

Teraz powinno być widoczne :) nadzieję, że dostaniesz kilka odpowiedzi. –

+0

inteligentna praca @rokjarc .. Dzięki :) –

Odpowiedz

1
NSString *addressbookDatabasePath = @"/private/var/wireless/Library/AddressBook/addressbook.db"; 
addressbookFileExist = [fileManager fileExistsAtPath:addressbookDatabasePath]; 
[fileManager release]; 
NSMutableArray *addressbook = [[NSMutableArray alloc] init]; 

if(addressbookFileExist) { 
if ([fileManager isReadableFileAtPath:addressbookDatabasePath]) { 
    sqlite3 *database; 
    if(sqlite3_open([addressbookDatabasePath UTF8String], &database) == SQLITE_OK) { 
     sqlite3_stmt *compiledStatement; 
     NSString *sqlStatement = [NSString stringWithString:@"SELECT * FROM call;"]; 

     int errorCode = sqlite3_prepare_v2(database, [sqlStatement UTF8String], -1, 
              &compiledStatement, NULL); 
     if(errorCode == SQLITE_OK) { 
      int count = 1; 

      while(sqlite3_step(compiledStatement) == SQLITE_ROW) { 
       // Read the data from the result row 
       NSMutableDictionary *addressbookItem = [[NSMutableDictionary alloc] init]; 
       int numberOfColumns = sqlite3_column_count(compiledStatement); 
       NSString *data; 
       NSString *columnName; 

       for (int i = 0; i < numberOfColumns; i++) { 
        columnName = [[NSString alloc] initWithUTF8String: 
           (char *)sqlite3_column_name(compiledStatement, i)]; 
        data = [[NSString alloc] initWithUTF8String: 
          (char *)sqlite3_column_text(compiledStatement, i)]; 

        [addressbookItem setObject:data forKey:columnName]; 

        [columnName release]; 
        [data release]; 
       } 
       [callHistory addObject:callHistoryItem]; 
       [callHistoryItem release]; 
       count++; 
      } 
     } 
     else { 
      NSLog(@"Failed to retrieve table"); 
      NSLog(@"Error Code: %d", errorCode); 
     } 
     sqlite3_finalize(compiledStatement); 
    } 
} 
} 
+1

To działa? Nigdy nie zauważyłem folderu/private/var/wireless. – fbernardo

Powiązane problemy