越狱后的手机的数据库文件可以自由访问,通话记录通常保存在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通话记录(需越狱)相关推荐

  1. 通话记录查询Java_Android获取手机通话记录的方法

    Android如何获取手机通话记录,本文为大家揭晓. 获取手机通话记录流程: 1. 获取ContentResolver; ContentResolver resolver = getContentRe ...

  2. Android获取手机通话记录的方法

    获取手机通话记录流程: 1. 获取ContentResolver; ContentResolver resolver = getContentResolver(); 2.resolver.query( ...

  3. android通讯录管理(获取联系人,通话记录,短信消息),Android通讯录管理(获取联系人、通话记录、短信消息)(二)...

    Android通讯录管理(获取联系人.通话记录.短信消息)(二) 前言:上一篇博客介绍的是获取联系人的实现,本篇博客将介绍通话记录的实现. 界面布局: /Contact_Demo/res/layout ...

  4. android通话记录手机号码归属地,mui 获取手机通话记录

    export default { onLoad() { this.log(); // this.msg(); // this.concat(); }, methods: { log() { // 获取 ...

  5. Android通讯录管理 获取联系人 通话记录 短信消息 一

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Andr ...

  6. Android通讯录管理(获取联系人 通话记录 短信消息)(一)

    Android通讯录管理(获取联系人.通话记录.短信消息) 2014年2月26日 通讯录开发研究学习 前言:前阵子主要是记录了如何对联系人的一些操作,比如搜索,全选.反选和删除等在实际开发中可能需要实 ...

  7. Android通讯录管理(获取联系人 通话记录 短信消息)(三)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Andr ...

  8. 如何在 iPhone 上恢复已删除的通话记录/通话记录

    您的通话记录/通话记录可能很重要,尤其是当您想要拨打之前联系过但未保存的号码时.如果您碰巧删除了通话记录(有意或无意),本指南将帮助您了解如何检索它们并找回您需要使用的所有记录.我们将根据您的情况和您 ...

  9. Windows Mobile获取通话记录 C#

    Windows Mobile获取通话记录 C# 文章作者:alalmn文章作者:[E.S.T] alalmn 信息来源:邪恶八进制信息安全团队(www.eviloctal.com)飞龙 QQ31611 ...

最新文章

  1. 【数据库】sqlite中PRAGMA命令说明
  2. 爬虫之xpath语法-节点修饰语法
  3. find命令详解(原创)
  4. FreeRTOS介绍
  5. 云闪付怎么设置不跳华为支付_【教程】华为Pay用闪付券撸京东E卡!
  6. 底部固定菜单_【悬浮菜单】安卓悬浮amp;手势助手
  7. 如何节约数据中心空间
  8. h5页面保存img_一文彻底解决HTML5页面中长按保存图片功能
  9. HardFault_Handler问题查找方法
  10. lEO数值资产系统某平台c2c币数值合约交易平台自动撮合松机器人功能
  11. 初识exe程序反汇编小感
  12. 关于Debug和Release之本质区别(转)
  13. 安卓电视 TV端的webview网页 按键控制和一些小问题
  14. Unity-TA 成长之路(二)内置渲染管线-官方篇
  15. android gps 经纬度转换,AndroidGPS获取当前经纬度坐标
  16. SAS计算IV代码分享
  17. 费马大定理 超级计算机,数学专业经典读物
  18. 动词ing基本用法_动词-ing的形式及用法
  19. 使用windows自带的测速工具WinSat对移动硬盘进行测速
  20. K8S集群中Pod资源处于CrashLoopBackOff状态排查思路

热门文章

  1. 注解 java 反射_java注解和反射
  2. linnux 流量控制模块tc_可编程控制器PLC基本工作原理(第一颗)
  3. python爬虫提取教学_python爬虫的基本抓取
  4. PTP NTP kernel 驱动讲解 (未完待续)
  5. java gson 解析string_Java之——深入解析String、StringBuffer、StringBuiler
  6. python扫雷代码文件_基于Python实现的扫雷游戏实例代码
  7. java 复杂报表_Java+POI+模板”一:打造复杂Excel 报表
  8. Vivado 随笔(1) 综合属性之 ram_style rom_style?
  9. linux tcp重传多会导致软中断在各个核很不均匀么?
  10. Swift - 使用NSNotificationCenter发送通知,接收通知