Bozuk iOS 8.0 cihazında bir hapis var ve Telefon uygulamasında bir arama geçmişinin olduğunu görebiliyorum ve cihazdan bir kaç arama yaptım/çağrı geçmiş kayıtları olması gerektiğinden emin olun. Ancak, /private/var/wireless/Library/CallHistory/call_history.db
erişmeye çalıştığımda veritabanından alınan satır yok.Neden call_history.db iOS 8.0'de boş?
Bu durumda cihaz arama geçmişini nereden alıyor? AFAIK, CallHistoryDB/CallHistory.storedata'nın yerini CallHistoryDB/CallHistory.storedata konumuna çevirerek iOS 8.3'te gerçekleşti, ancak 8.0 çalıştırıyorum.
Buradaki kod, SQLITE_ROW yerine SQLITE_DONE değerini alıyor. Yanlış veritabanı bakıyoruz böylece
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*****
...
Neden veritabanı şeması aynı olduğunu varsayalım? Onu değiştirdiler. Cile'den iFile dosyasını indirin ve dosya sistemine göz atabilir ve SQLite veritabanlarını açabilirsiniz. Bu şekilde araştırma yapmak çok daha kolay. Ya da PC'nize kopyalayın. – creker