Como usar o SQLiteOpenHelper com banco de dados no cartão SD?
De acordo com várias respostas aqui e na Web, que estende o Aplicativo, e seu método herdado, getDatabasePath () permitiria definir o caminho de armazenamento do banco de dados do local padrão da memória interna para um cartão SD inserido de tamanho maio
Isso não está funcionando para mim. A construção sugerida ainda está usando o banco de dados na memória interna. De fato, o método getDatabasePath () nunca é chamado pelo SQLiteOpenHelper.
Gostaria de colocar isso em funcionament
Aqui está o que eu fiz até agora:
1..) Extensão do aplicativo:
public class MyApplication extends Application {
@Override
public File getDatabasePath(String name) {
// Just a test
File file = super.getDatabasePath(name);
return file;
}
@Override
public void onCreate() {
// Just a test
super.onCreate();
}
}
2.) Adicionando aplicativo estendido ao manifesto:
<application
...
android:name="MyApplication"
... >
3.) Estendendo e usando SQLiteOpenHelper:
public class MySqliteOpenHelper extends SQLiteOpenHelper {
public void onCreate(SQLiteDatabase sqliteDatabase) {
...
}
@Override
public void onUpgrade(SQLiteDatabase sqliteDatabase, int oldVersion, int newVersion) {
...
}
}
4.) Usando o SQLiteOpenHelper estendido em minhas Atividades da maneira usual:
public class MyActivity extends Activity {
private MySqliteOpenHelper mySqliteOpenHelper;
private SQLiteDatabase sqliteDatabase;
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
...
mySqliteOpenHelper = new MySqliteOpenHelper(getApplicationContext());
sqliteDatabase = mySqliteOpenHelper.getReadableDatabase();
...
}
@Override
protected void onDestroy() {
if (mySqliteOpenHelper != null) {
mySqliteOpenHelper.close();
mySqliteOpenHelper = null;
}
super.onDestroy();
}
}
Quero ressaltar que a classe Application estendida está funcionando em geral. Eu posso ver isso porque MyApplication.onCreate () é chamado. Mas MyApplication.getDatabasePath () não é chamado.
Qualquer ajuda é muito apreciada