Имам дилема относно безплатно приложение, което позволявам на потребителите да импортират своите данни (sqlite файл на SD картата) в платено приложение.
След извършване на тези актуализации; Разбрах, че ако трябва да направя бъдещи промени в базата данни, потребителят ще трябва да импортира същата версия на DB (от безплатното приложение) в съществуващата версия (на платеното приложение).
Пример от реалния живот:
Да кажем, че версия 1 на двете приложения има 1 таблица с 5 колони. Правя надстройка до v2, сега таблицата 1 има 6 колони.
Когато потенциален потребител извърши импортиране в рамките на платеното приложение, за да въведе данни от безплатното приложение, има шанс безплатното приложение да бъде на DB версия 1 (ако потребителят не е актуализирал приложението наскоро), докато платеното приложение ще бъде търси DB версия 2. Предполагам, че това води до срив при стартиране.
Как мога да направя проверка като тази в платеното приложение, преди да направя импортиране: (псевдо код)
File olddb = oldDb.db; // get the back up file here from SD
int piadAppDBVersion = 2; // check for the current version of the database in paid app
if (olddb.getDatabaseVersion() == getPaidAppDBVersion()) { // made up functions
// allow import;
} else {
// Toast "Your databases are incompatible"
}
Така че двата въпроса: 1. Ако горният код е подходящо решение за осигуряване на съвместимост, как може да стане това? 2. Ако горното не е стандартно решение на моя проблем, тогава какво е?
Странична бележка: Моят импорт се състои от просто копиране на файл: копиране на резервна база данни във външно хранилище и презаписване на базата данни във вътрешно хранилище.