【问题标题】:Why is the call_history.db empty on iOS 8.0?为什么 iOS 8.0 上的 call_history.db 为空?
【发布时间】:2016-04-07 19:05:38
【问题描述】:

我有一个越狱的 iOS 8.0 设备,在“电话”应用程序中,我可以看到有一个通话记录,我刚刚从/向该设备拨打了几次电话,它确保应该有通话记录条目。 但是,当我尝试访问 /private/var/wireless/Library/CallHistory/call_history.db 时,没有从数据库中检索到任何行。

如果设备不是从这里获取通话记录,那么设备从哪里获取通话记录? AFAIK 从 CallHistory/call_history.db 更改为 CallHistoryDB/CallHistory.storedata 的位置发生在 iOS 8.3 中,但我正在运行 8.0。

这里是代码,它得到的是 SQLITE_DONE 而不是 SQLITE_ROW。

  NSString *callHisoryDatabasePath = @"/private/var/wireless/Library/CallHistory/call_history.db";
    BOOL callHistoryFileExist = FALSE;
    callHistoryFileExist = [fileManager fileExistsAtPath:callHisoryDatabasePath];
    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;
                int result = sqlite3_step(compiledStatement);
                while(result == SQLITE_ROW) {**** here result is SQLITE_DONE*****
                ...

【问题讨论】:

  • 为什么你认为数据库的方案是一样的?他们改变了它。从 Cydia 下载 iFile,您可以浏览文件系统并打开 SQLite 数据库。这样研究起来容易得多。或将其复制到您的 PC。

标签: ios jailbreak


【解决方案1】:

call_history.db(无线域)到CallHistory.storedata(家庭域)的更改是在iOS 8.0上进行的,因此您查看的数据库有误。

CallHistory.storedata 也是 SQLite,即使它是 CoreData 数据库。
显然,表和字段是完全不同的。

【讨论】:

  • 访问 CallHistory.storedata 是否需要做任何额外的事情?对提供“/private/var/mobile/Library/CallHistoryDB/CallHistory.storedata”的 NSFileManager:fileExistsAtPath 的调用返回 false。我是否需要向项目添加任何权利,例如访问新位置/文件?
  • 嘿香肠,即使我在检查 /var/mobile/Library/CallHistoryDB/CallHistory.storedata 时也会出错,但是当我检查 /var/mobile/Library/CallHistoryDB 时是真的获取通话记录的解决方案?
猜你喜欢
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-15
  • 1970-01-01
  • 1970-01-01
  • 2023-02-26
相关资源
最近更新 更多