Obtener el directorio de bases de datos de mi aplicación mediante programación

Quiero usar una base de datos "precargada" en mi aplicación. Hay un montón de preguntas sobre esto y la mayoría apuntan a este artículo de blog aquí o similares.

Hasta aquí todo bien. Sólo quiero saber si hay una mejor manera de obtener el directorio de bases de datos por defecto para que no tenga que usar algo como esto:

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

Quiero decir, tal vez eso se cambió en el futuro o tal vez un dispositivo o rom podría colocarlo en otro lugar … así que hay una manera de obtener esta vía de programación?

En Contexto existe un método para getDatabasePath (nombre), pero necesitas darle un nombre db existente y así … no existe todavía, quiero moverlo allí: P

    5 Solutions collect form web for “Obtener el directorio de bases de datos de mi aplicación mediante programación”

    Crear un DB vacío, obtener la ruta con getDatabasePath() , a continuación, sobrescribirlo con el suyo propio.

    Solía…

     String destPath = getFilesDir().getPath(); destPath = destPath.substring(0, destPath.lastIndexOf("/")) + "/databases"; 

    Utilizado por SQLiteAssetHelper:

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

    En este momento, la base de datos no existe. Creo que la cadena sólo toma la ruta interna y agrega los modificadores adecuados. De hecho, esto parece funcionar bien:

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

    Básicamente, no es necesario tener una base de datos real creada, sólo pide una.

    Puede utilizar el método getFilesDir() o getDatabasePath en una Activity-Class para obtener esta carpeta.
    Más información aquí

    Puede utilizar el método getDatabasePath en su clase Helper:

     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(); } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.