SQLite
 sql >> Database >  >> RDS >> SQLite

Impossibile aprire il database in modalità di lettura/scrittura

La tua domanda non è molto chiara, ma cercherò di rispondere.

Molto probabilmente, il tuo database:

  1. Non esiste ancora e devi crearlo;
  2. Il tuo file di database è di sola lettura, devi cambiarlo (questa domanda potrebbe essere correlata).

Per #2, invece di usare SQLiteOpenHelper#getReadableDatabase() , usa SQLiteOpenHelper#getWritableDatabase

Se il tuo database si trova su un'unità di archiviazione esterna, devi controllare alcune altre cose:

  1. La memoria esterna è attualmente montata? In caso contrario, non puoi accedere al db.
  2. È montato in sola lettura? In tal caso, dovrai cambiarlo.
  3. Hai controllato il percorso? È corretto?

Il problema potrebbe riguardare uno qualsiasi di questi argomenti.

Per verificare se è montato in sola lettura, prova quanto segue:

/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}

/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state) ||
        Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}

Preso da qui.

Per maggiori informazioni sull'Environment classe, fare riferimento alla documentazione.