это приложение имеет множество функций, но одно это, студент может найти нужную ему книгу, а приложение покажет ему, где эта книга, какая строка, какая полка. Имя автора, номер тега. , если появятся новые книги в библиотеку, как я могу обновить существующую базу данных, которая будет на каждом телефоне, могу ли я отправить обновленную базу данных, как это будет возможно? или я могу отправить новые sql-запросы, как это будет возможно? или любое предложение от вас? приложение не в сети. Я не хочу, чтобы он каждый раз использовал Интернет, только для обновления только один раз в неделю.Как я могу обновить существующую базу данных моего приложения Android на каждом устройстве?
ответ
Вам необходимо изменить номер версии, переданный в методе OnCreate, в классе Database, где вы расширяете SqliteOpen Helper. Когда будет установлено приложение новой версии, он будет вызывать метод OnUpgrade (..), здесь вы пишете все свои запросы.
Прежде всего, вам нужно обновить версию существующей базы данных, которая уже создана в вашем приложении.
Это вкратце о
onUpgrade()
1. SQLiteOpenHelper should call the super constructor.
2. The onUpgrade() method will only be called when the version integer is larger than the current version running in the app.
3. If you want the onUpgrade() method to be called, you need to increment the version number in your code.
Как отметил @Rohit Heera, обновление приложения будет решить вашу проблему, но в моем ответе я бы отвечая на другой подход.
если новые книги пришли в библиотеку, как я могу обновить существующую базу данных, которая будет на каждом телефоне
Когда новая книга прибыли, или у вас есть коллекция книг готовы для обновления базы данных , то вы можете планировать отправку push-уведомления на каждое устройство, которое позволит пользователю узнать, что у них есть новые доступные книги. После этого (при нажатии на push-уведомление) ответственность за попадание в серверную apis и получение новых книг будет отвечать клиентам.
подход к нажимной график уведомления:
- Еженедельный толчок уведомление
- В качестве, когда новая книга прибывает.
- Всякий раз, когда приходит коллекция (скажем, 50) книг.
Таким образом, вы не будете применять пользователя для обновления приложения.
пока что это хорошо, я получил идея, но как это сделать, вы можете предпочесть некоторые ссылки? –
Отправка push-уведомления и создание веб-api зависит от используемой вами технологии на стороне сервера. нажмите на android: https://developers.google.com/cloud-messaging/android/start В OnMessageReceive() вы можете попасть в веб-api и получить данные. Получив данные, добавьте эти данные в свою локальную базу данных. – guptakvgaurav
Похоже, что у вас есть статическая база данных, и вы просто хотите заменить файл на устройстве. Если это так, попробуйте это.
Вы можете заархивировать новый файл базы данных и поместить его в исходный каталог.
При запуске приложения и, прежде чем создать соединение, которое необходимо удалить текущую базу данных (убедитесь, что вы отслеживать путь к базе данных для последующего использования)
File existingDb = context.getDatabasePath([name of database]);
if(dbDir.exists()) {
dbDir.delete();
}
Затем распаковать новый файл базы данных, найти правильный файл в zip и скопировать его в каталог базы данных, который вы отслеживали ранее.
ZipInputStream zis = new ZipInputStream(context.getResources().openRawResource([zip res]));
try {
ZipEntry ze = null;
while ((ze = zis.getNextEntry()) != null) {
String fileName = ze.getName();
// ensure only plists are added to the input streams
if (DATABASE_FILE_NAME.equals(fileName)) {
int actual = 0;
byte[] baf = new byte[MAX_DOWNLOAD_CHUNK];
FileOutputStream out = new FileOutputStream(new File([outDir], fileName));
while ((actual = zis.read(baf, 0, MAX_DOWNLOAD_CHUNK)) > 0) {
out.write(baf, 0, actual);
}
out.flush();
out.close();
zis.closeEntry();
}
}
} finally {
try {
zis.close();
} catch (IOException e) {
// file is already closed. ignore
}
}
Теперь вы должны иметь возможность подключиться к новой базе данных в соответствии с нормальным
Мне нравится эта идея больше всего ... потому что каждый телефон будет иметь одну и ту же базовую статическую базу, поэтому, если новые книги будут вставлены, я должен отправить всю базу данных каждому пользователю и заменить старый. Но как я могу это сделать, если база данных обновлений администратора на ПК, а затем, как она будет отправляться каждому пользователю. –
Это решение работает только тогда, когда пользователь обновляет приложение (требуется новая база данных в apk. Как уже упоминалось, в идеале следует использовать один из: 1. push notifcations 2. диспетчер синхронизации 3. Отправить запрос во время выполнения для любых обновлений на сервере. Очевидно, что для этого требуется больше работы – Stimsoni
Почему мой вопрос не работает? Если я не знаю, кто будет ответь мне за это ???, который собирается мне помочь, это был мой первый попыток здесь я разочарован их действиями .. Мне действительно нужна помощь с этой штукой. Спасибо, ребята, за вашу поддержку. Как я могу активировать свою учетную запись? –
использовать Alarmmanager запрашивающего сервера в недельном интервале, и в то время как новые книги добавлены в сервере просто сохранить метку время, когда он добавляется, когда клиентское приложение попадает на сервер в это время, просто проверяя отметкой времени (т. е. до записи за одну неделю) и отправляя ответ JSON клиенту. –
вы можете поделиться некоторыми полезными ссылками, я новичок в android, просто научился реализовывать базу данных, остальное я не знаю, как разместить свои новые обновления или вещи и как они будут добираться до пользователей и т. Д. –