Как создавать базу данных в указанной директории SQLite Android

177
01 ноября 2017, 01:16

Как создавать базу данных в указанной директории?

Answer 1

Можно создать БД и в external хранилище. в своём SQLiteDataBaseHelper'e при создании базы в параметр с именем БД, передайте полный путь директории с именем самой БД и не забудьте про пермишны на запись в external storage. Но вы должны понимать, что такая БД никак не защищена и вообще по сути не является частью приложения

public MyExternalDataBaseHelper(final Context context) {
    super(context, Environment.getExternalStorageDirectory()
    + File.separator + DATABASE_NAME, null, DATABASE_VERSION);
}

Пермишны прописать в манифест (или в случае Android M+ вывести диалог с запросом пермишна при открытии приложения)

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

По дефолту путь к БД примерно такой /data/data/com.example.app/databases/mydb.db

Answer 2

Все достаточно просто. Местонахождение БД определяется вызовом Context.getDatabasePath() - все что нужно разработчику, надо просто перекрыть в своем Activity вызов этого метода и возвращать путь где будет находиться ваша БД:

@Override
public String getDatabasePath(String name) {
   //blah-blah
}

Далее при вызове openOrCreateDatabase() - будет вызван ваш метод ну и т.д.

READ ALSO
реализация Map java [требует правки]

реализация Map java [требует правки]

На базе существующих реализаций интерфейса Map, создать реализацию Map, которая будет гарантированно выдавать ключи в том же порядке, в котором...

236
ExpandableListView с меняющимися цветами

ExpandableListView с меняющимися цветами

Есть ExpandableListView и 2 цветаОно должно работать по такому принципу: должен быть родительский синий, потом дочерней красный, затем дочерний 2 синий,...

157
Почему возникают коллизии?

Почему возникают коллизии?

Как известно, ситуация, когда у разных объектов одинаковые хеш-коды называется — коллизиейВероятность возникновения коллизии зависит от используемого...

175
Асинхронное чтение/запись в Realm используя RXJava 2

Асинхронное чтение/запись в Realm используя RXJava 2

Моя первая реализация асинхронной работы с помощью RXJava 2

157