6

アプリケーションを構築したので、新しいバックアップ アプリケーションを使用して、その実行中のアプリケーションのデータベースをコピーしたいと考えています。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;
}

これを達成する方法について何か提案はありますか?

4

4 に答える 4

10

カスタム コンテンツ プロバイダーで実行中のアプリケーション データベースを作成した場合にのみ、同じデータベースを使用できます。

実行中のアプリケーションからデータベースに直接アクセスすることはできません。

ただし、カスタム コンテンツ プロバイダーで実行中のアプリケーション データベースを作成すると、権限の助けを借りてデータベースに直接アクセスできます。

この場合、そのデータベースをコピーする必要さえありません。

カスタム コンテンツ プロバイダーについては、このリンクを参照してください。

于 2012-05-23T11:31:18.517 に答える
4
No

アプリケーションがContentProviderを介してインターフェイスを提供しない限り、他のアプリケーションのデータベースにアクセスすることはできません。

于 2012-05-23T11:26:20.937 に答える
2

DDMSを使用すると、SQLiteデータベースを参照できるため、このリンク http://www.brighthub.com/mobile/google-android/articles/25023.aspxhttp://www.edumobile.org/android/からDDMSのチュートリアルをお読みください 。 category / android-beginner-tutorials /

于 2012-05-23T11:25:50.873 に答える
2

Androidのセキュリティをお読みください。 アプリケーションによって保存されたデータには、そのアプリケーションのユーザーIDが割り当てられ、通常は他のパッケージにアクセスできません。

于 2012-05-23T11:28:23.057 に答える