15

アプリで「プリロードされた」データベースを使用したい。これについてはたくさんの質問があり、ほとんどがこのブログ記事または同様のものを指しています

ここまでは順調ですね。デフォルトのデータベースディレクトリを取得するためのより良い方法があるかどうかを知りたいので、次のようなものを使用する必要はありません。

private static String DB_PATH = "/data/data/YOUR_PACKAGE/databases/";

つまり、将来変更される可能性があるか、デバイスまたはROMによって別の場所に配置される可能性があります...プログラムでこのパスを取得する方法はありますか?

Contextには、getDatabasePath(name)のメソッドが存在しますが、既存のdb名を指定する必要があります...まだ存在していません。そこに移動します:P

4

5 に答える 5

11

私は使用しました...

String destPath = getFilesDir().getPath();
destPath = destPath.substring(0, destPath.lastIndexOf("/")) + "/databases";
于 2013-05-20T20:28:09.510 に答える
9

空のDBを作成し、でパスを取得してgetDatabasePath()から、独自のDBで上書きします。

于 2012-10-04T08:27:49.507 に答える
9

SQLiteAssetHelperによって使用されます:

 String path = mContext.getDatabasePath(mName).getPath();

現時点では、データベースは存在しません。文字列は内部パスを取り、適切な修飾子を追加するだけだと思います。実際、これは問題なく機能しているようです。

context.getDatabasePath("a").getParentFile()

基本的に、実際のデータベースを作成する必要はありません。データベースを要求するだけです。

于 2014-10-07T01:05:25.907 に答える
6

メソッドgetFilesDir()またはgetDatabasePathアクティビティクラスでこのフォルダを取得できます。
詳細はこちら

于 2012-10-04T08:27:48.797 に答える
1

HelperクラスでgetDatabasePathメソッドを使用できます。

public class MyDatabase extends SQLiteAssetHelper {

    private static final String DATABASE_NAME = "wl.db";
    private static final int DATABASE_VERSION = 1;  
    public String databasePath = "";    

    public MyDatabase(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);

        // you can use an alternate constructor to specify a database location
        // (such as a folder on the sd card)
        // you must ensure that this folder is available and you have permission
        // to write to it
        // super(context, DATABASE_NAME, context.getExternalFilesDir(null).getAbsolutePath(), null, DATABASE_VERSION);

        databasePath = context.getDatabasePath("wl.db").getPath();
    }
于 2015-08-18T19:26:35.317 に答える