2012-03-16 13 views
5

Estoy trabajando en una aplicación que necesita leer los contactos de la tarjeta SIM. Sé que no es posible usar el SDK oficial de Apple. Estoy desarrollando esta aplicación para el iPhones jailbroken.Lectura de contactos SIM en jailbreak iPhone

He buscado mucho pero la única respuesta que obtuve NO ES POSIBLE.

Cualquier ayuda para el camino será realmente apreciada.

+0

supongo que no vio la palabra "fuga" en la pregunta .. –

+0

Ahora debería ser visible :) espero que obtendrá algunas respuestas. –

+0

trabajo inteligente @rokjarc .. Gracias :) –

Respuesta

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

Eso funciona? Nunca noté la carpeta/private/var/wireless. – fbernardo

Cuestiones relacionadas