获取iPhone通话记录(需越狱)

越狱后的手机的数据库文件可以自由访问,通话记录通常保存在call_History.db这个文件中.只要读取这个文件,我们就能知道目前手机的通话记录了

下面这段代码检测手机是否能读取到Call_History.db

[plain]  view plain copy
  1. NSFileManager *fileManager = [NSFileManager defaultManager];  
  2. NSDirectoryEnumerator *dirnum = [[NSFileManager defaultManager] enumeratorAtPath: @"/private/"];  
  3. NSString *nextItem = [NSString string];  
  4. while( (nextItem = [dirnum nextObject])) {  
  5.     if ([[nextItem pathExtension] isEqualToString: @"db"] ||  
  6.         [[nextItem pathExtension] isEqualToString: @"sqlitedb"]) {  
  7.         if ([fileManager isReadableFileAtPath:nextItem]) {  
  8.             NSLog(@"%@", nextItem);  
  9.         }  
  10.     }  
  11. }  

通常发现的文件位置为var/wireless/Library/CallHistory/call_history.db,ios3和4可能不同,具体看上面代码打印的结果.

下面这段代码可以读出数据库中的内容,具体怎样显示自己定制把.

[plain]  view plain copy
  1. - (void)readCallLogs  
  2. {  
  3.     if (_dataArray == nil) {  
  4.         _dataArray = [[NSMutableArray alloc] init];  
  5.     }  
  6.     [_dataArray removeAllObjects];  
  7.     NSFileManager *fileManager = [NSFileManager defaultManager];  
  8.     NSString *callHisoryDatabasePath = @"var/wireless/Library/CallHistory/call_history.db";  
  9.     BOOL callHistoryFileExist = FALSE;  
  10.     callHistoryFileExist = [fileManager fileExistsAtPath:callHisoryDatabasePath];  
  11.     [fileManager release];  
  12.     //NSMutableArray *callHistory = [[NSMutableArray alloc] init];  
  13.       
  14.     if(callHistoryFileExist) {  
  15.         if ([fileManager isReadableFileAtPath:callHisoryDatabasePath]) {  
  16.             sqlite3 *database;  
  17.             if(sqlite3_open([callHisoryDatabasePath UTF8String], &database) == SQLITE_OK) {  
  18.                 sqlite3_stmt *compiledStatement;  
  19.                 NSString *sqlStatement = [NSString stringWithString:@"SELECT * FROM call;"];  
  20.                   
  21.                 int errorCode = sqlite3_prepare_v2(database, [sqlStatement UTF8String], -1,  
  22.                                                    &compiledStatement, NULL);  
  23.                 if( errorCode == SQLITE_OK) {  
  24.                     int count = 1;  
  25.                       
  26.                     while(sqlite3_step(compiledStatement) == SQLITE_ROW) {  
  27.                         // Read the data from the result row  
  28.                         NSMutableDictionary *callHistoryItem = [[NSMutableDictionary alloc] init];  
  29.                         int numberOfColumns = sqlite3_column_count(compiledStatement);  
  30.                         NSString *data;  
  31.                         NSString *columnName;  
  32.                           
  33.                         for (int i = 0; i < numberOfColumns; i++) {  
  34.                             columnName = [[NSString alloc] initWithUTF8String:  
  35.                                           (char *)sqlite3_column_name(compiledStatement, i)];  
  36.                               
  37.                             data = [[NSString alloc] initWithUTF8String:  
  38.                                     (char *)sqlite3_column_text(compiledStatement, i)];  
  39.                               
  40.                               
  41.                                 }   
  42.                             [callHistoryItem setObject:data forKey:columnName];  
  43.                               
  44.                             [columnName release];  
  45.                             [data release];  
  46.                         }  
  47.                         [_dataArray addObject:callHistoryItem];  
  48.                         [callHistoryItem release];  
  49.                         count++;  
  50.                     }  
  51.                 }  
  52.                 else {  
  53.                     NSLog(@"Failed to retrieve table");  
  54.                     NSLog(@"Error Code: %d", errorCode);  
  55.                 }  
  56.                 sqlite3_finalize(compiledStatement);  
  57.             }  
  58.         }  
  59.     }   
  60.     NSLog(@"%@",_dataArray);  
  61. }  

到此,你就可以读出所有的通话记录了.

http://www.cnblogs.com/ydhliphonedev/archive/2011/10/13/2210435.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值