I'm developing an iOS application using iOS 6. I need to get the call history from the iOS device programmatically. I've tried my best and got a solution but it only works in below iOS 5. Is it possible in above iOS 5 or in iOS 6?
我正在使用iOS 6开发iOS应用程序。我需要以编程方式从iOS设备获取调用历史记录。我已经尽了最大努力并得到了一个解决方案,但它只适用于iOS 5以下。在iOS 5或iOS 6中是否可以使用?
2 个解决方案
#1
1
in my ios5 device, the call log location is
在我的ios5设备中,呼叫记录位置是
"/private/var/wireless/Library/CallHistory/call_history.db"
“/private/var/wireless/Library/CallHistory/call_history.db”
and here is my code to retrieve call log
这是我的代码来检索通话记录
- (void)getCallHistory
{
self.callHistories = [NSMutableArray array];
FMDatabase *db = [FMDatabase databaseWithPath:@"/private/var/wireless/Library/CallHistory/call_history.db"];
NSLocale *usLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease];
if([db open]) {
FMResultSet *rs = [db executeQuery:@"select address, date, flags, duration from call order by date"];
while ([rs next]) {
int dateInt = [rs intForColumn:@"date"];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:dateInt];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"YYYY-MM-dd HH:mm"];
NSString *dateString = [df stringFromDate:date];
int flagsInt = [rs intForColumn:@"flags"];
NSString *flags = @"?";
switch (flagsInt) {
case 4: flags = @"<-"; break;
case 5: flags = @"->"; break;
default: break;
}
int durationInt = [rs intForColumn:@"duration"];
NSString *duration = [NSString stringWithFormat:@"%d:%02d", durationInt / 60, durationInt % 60];
NSString *logLine = [NSString stringWithFormat:@"%@ %@ %@ (%@)", dateString, flags, [rs stringForColumn:@"address"], duration];
[callHistories addObject:logLine];
}
[rs close];
rs = [db executeQuery:@"select bytes_rcvd, bytes_sent from data where pdp_ip = 0"];
while ([rs next]) {
double bytes_sent = [rs doubleForColumn:@"bytes_sent"];
double bytes_rcvd = [rs doubleForColumn:@"bytes_rcvd"];
self.prettyBytesSent = [[NSNumber numberWithDouble:bytes_sent] prettyBytes];
self.prettyBytesReceived = [[NSNumber numberWithDouble:bytes_rcvd] prettyBytes];
}
[rs close];
[db close];
}
}
hope it helps!
希望能帮助到你!
#2
0
You not get call history bcoz in ios 5 call_history.db not in read mode.so you not read this call_history.db flie.you only read this database in jailbreak.
你没有得到ios 5 call_history.db中的呼叫历史记录bcoz没有读取模式。所以你没有看到这个call_history.db flie.you只在越狱中读取这个数据库。
#1
1
in my ios5 device, the call log location is
在我的ios5设备中,呼叫记录位置是
"/private/var/wireless/Library/CallHistory/call_history.db"
“/private/var/wireless/Library/CallHistory/call_history.db”
and here is my code to retrieve call log
这是我的代码来检索通话记录
- (void)getCallHistory
{
self.callHistories = [NSMutableArray array];
FMDatabase *db = [FMDatabase databaseWithPath:@"/private/var/wireless/Library/CallHistory/call_history.db"];
NSLocale *usLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease];
if([db open]) {
FMResultSet *rs = [db executeQuery:@"select address, date, flags, duration from call order by date"];
while ([rs next]) {
int dateInt = [rs intForColumn:@"date"];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:dateInt];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"YYYY-MM-dd HH:mm"];
NSString *dateString = [df stringFromDate:date];
int flagsInt = [rs intForColumn:@"flags"];
NSString *flags = @"?";
switch (flagsInt) {
case 4: flags = @"<-"; break;
case 5: flags = @"->"; break;
default: break;
}
int durationInt = [rs intForColumn:@"duration"];
NSString *duration = [NSString stringWithFormat:@"%d:%02d", durationInt / 60, durationInt % 60];
NSString *logLine = [NSString stringWithFormat:@"%@ %@ %@ (%@)", dateString, flags, [rs stringForColumn:@"address"], duration];
[callHistories addObject:logLine];
}
[rs close];
rs = [db executeQuery:@"select bytes_rcvd, bytes_sent from data where pdp_ip = 0"];
while ([rs next]) {
double bytes_sent = [rs doubleForColumn:@"bytes_sent"];
double bytes_rcvd = [rs doubleForColumn:@"bytes_rcvd"];
self.prettyBytesSent = [[NSNumber numberWithDouble:bytes_sent] prettyBytes];
self.prettyBytesReceived = [[NSNumber numberWithDouble:bytes_rcvd] prettyBytes];
}
[rs close];
[db close];
}
}
hope it helps!
希望能帮助到你!
#2
0
You not get call history bcoz in ios 5 call_history.db not in read mode.so you not read this call_history.db flie.you only read this database in jailbreak.
你没有得到ios 5 call_history.db中的呼叫历史记录bcoz没有读取模式。所以你没有看到这个call_history.db flie.you只在越狱中读取这个数据库。