Potrebbe essere un po' tardi, ma spero che questo aiuti a chiunque abbia questo problema (dal momento che non riesco a trovare una soluzione definitiva in giro).
Penso di conoscere il motivo di questa causa (almeno nel mio caso). Guardando nel DDMS --> Esplora file , ti renderesti conto che la Cartella del database (/data/data//databases/) non esiste, motivo per cui l'applicazione non può creare il file di database in quella cartella inesistente. Se riesci a creare una cartella di database in qualche modo, puoi evitare questo problema.
Poiché sono pigro, ho appena usato la cartella /data/data//files/ quando sono in modalità emulatore. Puoi ottenere la directory dei file usando questo:
context.getFilesDir().getPath()
Questo ha funzionato magnificamente per me nell'emulatore.
Spero che questo aiuti qualcuno.
Se vuoi vedere del codice:
String dbFilename = "example.db";
try
{
File databaseFile = getDatabasePath(dbFilename);
SQLiteDatabase _db = SQLiteDatabase.openOrCreateDatabase(databaseFile);
} catch (Exception e)
{
String databasePath = getFilesDir().getPath() + "/" + dbFilename;
File databaseFile = new File(databasePath);
_db = SQLiteDatabase.openOrCreateDatabase(databaseFile);
}
EDIT:ho provato ad accedere a Facebook (la mia app ha l'integrazione con FB) sull'emulatore e la cartella / database è apparsa dopo (e persisteva). Non sono sicuro di cosa sia successo, ma è possibile creare quella cartella in qualche modo. Qualcosa su cui un altro esperto qui intorno può far luce.