Доступ к базе данных одного приложения из другого приложения

Я создал приложение и теперь хочу скопировать базу данных этого запущенного приложения с помощью моего нового приложения для резервного копирования. Я создаю свой путь к базе данных, выполнив DB_PATH + DB_NAME, используя следующие значения:

DB_PATH = "/data/data/iCam.Cam/";
DB_NAME = "testdb.db";

У меня есть код, который копирует базу данных с заданного пути на SD-карту. Однако, когда я сначала проверяю базу данных, используя следующий метод, он возвращает false:

public boolean checkDataBase() {    
    SQLiteDatabase checkDB = null;

    try {
        String myPath = DB_PATH + DB_NAME;
        checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    } catch (SQLiteException e) {
        e.fillInStackTrace();
        // database does't exist yet.
    }

    if (checkDB != null) {
        checkDB.close();
    }

    return checkDB != null ? true : false;
}

Любые предложения о том, как этого добиться?


person Trikaldarshiii    schedule 23.05.2012    source источник
comment
Ответ @ Rasel правильный. Вы должны использовать contentProvider из вашего фактического приложения, чтобы поделиться своим управлением базой данных. почему ты все равно хочешь скопировать ??   -  person drulabs    schedule 23.05.2012
comment
Я хочу скопировать его, потому что мое приложение отправляет базу данных на сервер, но в настоящее время оно не отправляет некоторые данные, которые должны быть загружены в Интернет, поэтому мне нужно, чтобы эта база данных скопировалась на SD-карту, чтобы меня можно было отправить по почте   -  person Trikaldarshiii    schedule 23.05.2012


Ответы (4)


Вы можете использовать ту же базу данных, только если вы создали базу данных работающего приложения в настраиваемом поставщике контента.

Вы не можете напрямую получить доступ к базе данных из запущенного приложения.

Но если вы создаете базу данных текущего приложения в Custom Content Provider, то с помощью властей вы можете получить прямой доступ к базе данных.

В этом случае вам даже не нужно копировать эту базу данных.

Обратитесь к этой ссылке для получения персонализированного поставщика содержимого.

person Kri    schedule 23.05.2012

No

вы не можете получить доступ к базе данных другого приложения, если приложение не предоставит вам интерфейс через ContentProvider.

person Rasel    schedule 23.05.2012

Используя DDMS, вы можете просматривать свою базу данных SQLite, поэтому прочтите руководство по DDMS по этой ссылке http://www.brighthub.com/mobile/google-android/articles/25023.aspx http://www.edumobile.org/android/category/android-beginner-tutorials/

person Thiru VT    schedule 23.05.2012
comment
я должен передать эту настройку своему удаленному клиенту - person Trikaldarshiii; 23.05.2012

Прочтите Безопасность Android. Любые данные, хранящиеся в приложении, будут назначены этому приложению идентификатор пользователя и обычно недоступен для других пакетов

person Tarun    schedule 23.05.2012