获取iPhone通话记录(需越狱)
来源:互联网 发布:华为hg8010端口限速 编辑:程序博客网 时间:2024/06/06 20:43
http://www.cnblogs.com/ydhliphonedev/archive/2011/10/13/2210435.html
越狱后的手机的数据库文件可以自由访问,通话记录通常保存在call_History.db这个文件中.只要读取这个文件,我们就能知道目前手机的通话记录了
下面这段代码检测手机是否能读取到Call_History.db
NSFileManager *fileManager = [NSFileManager defaultManager];NSDirectoryEnumerator *dirnum = [[NSFileManager defaultManager] enumeratorAtPath: @"/private/"];NSString *nextItem = [NSString string];while( (nextItem = [dirnum nextObject])) { if ([[nextItem pathExtension] isEqualToString: @"db"] || [[nextItem pathExtension] isEqualToString: @"sqlitedb"]) { if ([fileManager isReadableFileAtPath:nextItem]) { NSLog(@"%@", nextItem); } }}
通常发现的文件位置为var/wireless/Library/CallHistory/call_history.db,ios3和4可能不同,具体看上面代码打印的结果.
下面这段代码可以读出数据库中的内容,具体怎样显示自己定制把.
- (void)readCallLogs{ if (_dataArray == nil) { _dataArray = [[NSMutableArray alloc] init]; } [_dataArray removeAllObjects]; NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *callHisoryDatabasePath = @"var/wireless/Library/CallHistory/call_history.db"; BOOL callHistoryFileExist = FALSE; callHistoryFileExist = [fileManager fileExistsAtPath:callHisoryDatabasePath]; [fileManager release]; //NSMutableArray *callHistory = [[NSMutableArray alloc] init]; if(callHistoryFileExist) { if ([fileManager isReadableFileAtPath:callHisoryDatabasePath]) { sqlite3 *database; if(sqlite3_open([callHisoryDatabasePath 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 *callHistoryItem = [[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)]; } [callHistoryItem setObject:data forKey:columnName]; [columnName release]; [data release]; } [_dataArray addObject:callHistoryItem]; [callHistoryItem release]; count++; } } else { NSLog(@"Failed to retrieve table"); NSLog(@"Error Code: %d", errorCode); } sqlite3_finalize(compiledStatement); } } } NSLog(@"%@",_dataArray);}
到此,你就可以读出所有的通话记录了.
by MAC-z
- 获取iPhone通话记录(需越狱)
- 获取iPhone通话记录(需越狱)
- 获取iPhone通话记录(需越狱)
- 获取iPhone通话记录(需越狱)
- 获取iPhone通话记录(需越狱)
- 获取iPhone通话记录(需越狱)
- 获取iPhone通话记录(需越狱)
- 获取iPhone通话记录(需越狱)
- 获取iPhone通话记录(需越狱)
- 获取iPhone通话记录call_history.db(需越狱)
- 获取通话记录
- iphone 越狱
- iphone通话记录表
- iPhone上读取通话记录
- Windows Mobile获取通话记录
- Windows Mobile获取通话记录
- Windows Mobile获取通话记录
- Windows Mobile获取通话记录
- Oracle多表查询优化的代码示例
- 读Qt例子-designer_calculatorbuilder笔记
- IP地址,天气,邮编,外汇等常用查询Web Service接口 转载的很好的东东
- EasyMock指南
- 高通串口驱动移植
- 获取iPhone通话记录(需越狱)
- 将GridView的数据生成DataTable
- C# 抓取网页数据
- source insight研究——正则表达式篇
- 弹出窗口
- cocos2d-x的未来展望
- 怎样正确查看Linux的内存占用情况
- 移动应用注定无法长久?
- Linux kernel panic解决方法