使用iPhone SDK访问iPhone的通话logging

我构build的应用程序需要从iPhone的通话logging(只读)的一些数据。 通话logging是位于“ /User/Library/CallHistory/call_history.db ”的sqlite数据库。 我用越狱设备来提取日志。 然而,尝试使用sqlite_open3()命令打开此位置我得到一个SQLITE_ERROR错误,根据库文档的意思是“SQL错误或缺less数据库”。 在试图debugging错误我已经使用NSFileManager来枚举文件夹('/用户/库/')。 看起来好像它正在返回一组“过滤的”结果,这些结果会排除“CallHistory”文件夹以及其他几个文件夹。

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

通话logging只存在于一个设备上,而不是模拟器 。 我一直无法运行在运行Fireware 2.1的第一代iPhone上。

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

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); } 

我有一个怀疑,苹果是阻止访问目录作为其沙盒策略的一部分,但我没有证据在这个阶段。 但是,我可以访问通讯录没有任何问题,所以我有点困惑。

谢谢

Cocoa Touch或其他iPhone API无法访问通话logging。

请记住,我还没有尝试过这一点。

你的逻辑似乎是,如果你可以访问通讯簿数据库,为什么不通话logging数据库? 那么,地址簿是通过公开的API公开的 – 通话logging不是。 因此,我不认为这是很奇怪,你不能访问其数据库文件。

您无法使用SDK和批准的API访问通话logging。 这是devise。

是的,这是可能的。 本教程的作品: http : //iosstuff.wordpress.com/2011/08/19/accessing-iphone-call-history/

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

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

使用configuration实用程序和skd,你可以监视什么时候打电话,但不能看到谁,我一直试图通过相同的问题,取得进展,但苹果definetly使它的私人信息,至less你的电话,

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