代码之家  ›  专栏  ›  技术社区  ›  Jonathan

使用iPhone SDK访问iPhone的通话记录

  •  6
  • Jonathan  · 技术社区  · 16 年前

    我正在构建一个需要iPhone通话记录(只读)中的一些数据的应用程序。 调用日志是一个sqlite数据库,位于“ /用户/库/呼叫历史/call_history.db “我用越狱设备提取了日志。 但是,尝试使用 sqlite_open3() 命令我得到一个 SQLITE_ERROR 错误,根据库文档,这意味着“SQL错误或缺少数据库”。为了调试错误,我使用NSFileManager枚举了文件夹(“/User/Library/”)。它似乎返回了一组“过滤”的结果,其中排除了“CallHistory”文件夹和其他几个文件夹。

    文件系统使用一系列别名来给人一种传统OS X文件结构的错觉,我不知道这些别名是否对我的结果有影响。

    呼叫日志仅存在于设备上,而不存在于模拟器上 。我无法让它在运行fireware 2.1的第一代iPhone上运行。

    这是我用来测试输出的一些代码

    NSDirectoryEnumerator *dirnum = [[NSFileManager defaultManager] enumeratorAtPath: @"/private/var/mobile/Library/"];
    
    while( bar = [dirnum nextObject])
    {
        //Uncomment if you don't want to log sub folders
        //[dirnum skipDescendents];
    
        NSLog(bar);
    }
    

    我怀疑苹果正在阻止对该目录的访问,作为其沙盒策略的一部分,但现阶段我没有证据。然而,我可以毫无问题地访问地址簿,所以我有点困惑。

    谢谢

    8 回复  |  直到 16 年前
        1
  •  15
  •   Chris Hanson    16 年前

    无法从Cocoa Touch或其他iPhone API访问调用日志。

        2
  •  3
  •   Mike McMaster    16 年前

    请记住,我没有尝试过这些。

    你的逻辑似乎是,如果你可以访问地址簿数据库,为什么不能访问呼叫日志数据库?好吧,地址簿是通过已发布的API公开的,而调用日志则不是。因此,我认为你也不能访问它的db文件并不奇怪。

        3
  •  3
  •   August    16 年前

    您无法使用SDK和批准的API访问呼叫日志。这是设计出来的。

        4
  •  3
  •   Eva Madrazo    14 年前
        5
  •  2
  •   Jesús A. Álvarez    16 年前

    应用程序并不意味着可以访问沙盒之外的任何内容。地址簿数据库是可访问的,因为它是由公共框架访问的。 在固件2.1之前,应用程序确实可以从其沙盒中进行只读访问。

        6
  •  2
  •   Matt Wagenknecht    14 年前

    我敢打赌,PhoneView会从Mac上的iphone备份文件夹中提取数据。sqlite数据库以可预测的名称存储在那里。

        7
  •  0
  •   leet    15 年前

    使用config实用程序和skd,你可以监控何时拨打电话,但看不到是谁,我一直在努力解决同样的问题,取得了进展,但苹果明确地将其作为私人信息,至少是你给谁打电话,

        8
  •  -1
  •   Vincent    16 年前

    老实说,你怎么能想象他们会让你访问整个通话记录?一旦你获取并充分利用了这些信息,你通过互联网传输它怎么样?