我正在构建需要来自iPhone的通话记录(只读)的一些数据的应用程序。 呼叫日志是位于“ /User/Library/CallHistory/call_history.db ”的sqlite数据库。我使用越狱设备来提取日志。 但是,尝试使用 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);
}
我怀疑Apple阻止访问该目录作为其沙盒策略的一部分,但是我现阶段没有证据。但是,我可以毫无问题地访问地址簿,所以我有点困惑。
由于
答案 0 :(得分:15)
无法从Cocoa Touch或其他iPhone API访问通话记录。
答案 1 :(得分:3)
请记住,我没有尝试过这些。
您的逻辑似乎是,如果您可以访问通讯簿数据库,为什么不调用日志数据库?好吧,地址簿是通过已发布的API公开的 - 呼叫日志不是。因此,我认为您无法访问其db文件也是如此奇怪。
答案 2 :(得分:3)
您无法使用SDK和已批准的API访问通话记录。这是设计的。
答案 3 :(得分:3)
答案 4 :(得分:2)
应用程序无意访问其沙箱中的任何内容。可以访问通讯簿数据库,因为它可以由公共框架访问。 在固件2.1之前,应用程序确实具有其沙箱中的只读访问权限。
答案 5 :(得分:2)
我敢打赌,PhoneView从Mac上的iphone备份文件夹中提取数据.sqlite数据库以可预测的名称存储在那里。
答案 6 :(得分:0)
使用配置实用程序和skd,您可以监控何时拨打电话,但无法看到谁,我一直试图通过相同的问题,取得进展但苹果绝对让它成为私人信息,至少是您的呼叫,
答案 7 :(得分:-1)
老实说,你怎么能想象他们会让你访问整个通话记录?一旦你拿到它并充分利用这些信息,你如何通过互联网传输它?