iPhone «не может открыть файл базы данных» для call_history.db в приложении xcode - PullRequest
1 голос
/ 31 марта 2011

Я пытаюсь получить доступ к базе данных call_history.db на взломанном iPhone. Я могу получить доступ к call_history.db для iPhone 4 с iOS 4.1. Но проблема в том, что я не могу получить доступ к базе данных в iPhone 3gs с iOS 3.1.3.

Когда я пытаюсь открыть базу данных для 3gs, я получаю следующую ошибку базы данных:

невозможно открыть файл базы данных

Я использую разные пути для iOS 4.1 и iOS 3.1.3

  • iOS 4.1 в iPhone 4 - /private/var/wireless/Library/CallHistory/call_history.db

  • и iOS 3.1.3 в iPhone 3gs - /private/var/mobile/Library/CallHistory/call_history.db

Обновление

Я получаю call_history.db следующим образом

//NSString *path=@"/private/var/wireless/Library/CallHistory/call_history.db";//for ios 4.0 and above call_history.db
 NSString *path=@"/var/mobile/Library/CallHistory/call_history.db";//for ios 3.0 and above call_history.db

if(sqlite3_open([path UTF8String], &database) == SQLITE_OK)
{
   //code for fetching the calls goes here.////

    NSLog(@"call_history present");
}

else {

    NSLog(@"Failed to open database with message '%s'.", sqlite3_errmsg(database));
    sqlite3_close(database);
}

Здесь выводится ошибка:

невозможно открыть файл базы данных

Я заметил, что не могу получить доступ к папке «Библиотека» на обоих iPhone с помощью приведенного выше кода. Я могу получить все файлы вручную через SSH.

Ответы [ 2 ]

5 голосов
/ 08 апреля 2011

Ваше приложение находится в песочнице, которая не может получить доступ к чему-либо вне себя.Предположим, вы нацелены на взломанные устройства, это другая история.

Xcode установит ваше приложение в изолированную среду.Вам необходимо вручную подписать приложение, используя ldid -S /YourApp.app/YourApp, а затем скопировать его в каталог устройств /Applications.

0 голосов
/ 08 апреля 2011

Это были лучшие и простые уроки, которые я видел
http://dblog.com.au/iphone-development-tutorials/iphone-sdk-tutorial-reading-data-from-a-sqlite-database/

Вместо жесткого кодирования пути, попробуйте ниже.

databaseName = @"AnimalDatabase.sql";

// Get the path to the documents directory and append the databaseName
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
...