2012-03-16 1 views
5

Я работаю над приложением, которое должно читать контакты с SIM-карты. Я знаю, что это невозможно с помощью официального Apple SDK. Я разрабатываю это приложение для jailbroken iPhones.Чтение контактов SIM в jailbroken iPhone

Я много искал, но единственный ответ, который я получил, НЕ ВОЗМОЖЕН.

Любая помощь по пути будет по достоинству оценена.

+0

Я думаю, вы не видите слово «побег из тюрьмы» в вопросе .. –

+0

Теперь должно быть видно :) надеюсь, вы получите ответы на некоторые вопросы. –

+0

умный труд @rokjarc .. Спасибо :) –

ответ

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

Что работает? Никогда не заметил папку/private/var/wireless. – fbernardo