powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Android Backup Service
8 сообщений из 8, страница 1 из 1
Android Backup Service
    #39612068
larum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть приложение с базой данных внутри. Хочу чтобы пользователи после смены телефона или если просто слетела база смогли вытянуть ее с бэкапа. В каждого пользователя своя база от ее сам и наполняет.
Ребята скажите пожалуйста стоит ли использовать бэкап (синхронизация) базы данных на основе Android Backup Service или может лучше что то другое использовать. Ели да, то подскажите что.
...
Рейтинг: 0 / 0
Android Backup Service
    #39612124
Фотография Amin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Само приложение умеет бэкап/рестор данных ?
Если нет, то есть ли возможность указать, где хранить данные - внутри/на SD ?
База одним файлом ? SQLite ?
...
Рейтинг: 0 / 0
Android Backup Service
    #39612130
larum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да. База одним файлом. SQLite.
Вот этот файл (БД) отправлять куда то в облако или другое место но не на флешку.
При добавлении данных в базу автоматически делался бэкап.
Ну и по нажатию кнопки в приложении база подтягивалась в приложение с бэкапа.
Еще смотрю в сторону Dropbox но там нужно чтобы каждый пользователь имел учетную запись.
Может есть что то попроще.
...
Рейтинг: 0 / 0
Android Backup Service
    #39612384
Фотография Amin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы посмотрел в сторону задействования утилит типа FTP Cafe -> SSH File Transfer по сети, или же использования ssh в своеё программе для отправки синка баз со своим сервером.
Ключи надо будет выдать, само собой, либо пароли должны быть очень качественные.

Учетные записи вам по-любому понадобятся, иначе ваши базы станут достоянием общественности, и возможно, даже не самой благонадёжной.
...
Рейтинг: 0 / 0
Android Backup Service
    #39612437
Oleg Shishkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лежит здесь https://github.com/shishkin1966/CleanArchitecture4


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
    public synchronized void backup(final String databaseName, final String dirBackup) {
        final T db = mDb.get(databaseName);
        if (db == null) {
            return;
        }

        final Class<T> klass = SafeUtils.cast(db.getClass().getSuperclass());
        final String pathDb = db.getOpenHelper().getReadableDatabase().getPath();
        if (StringUtils.isNullOrEmpty(pathDb)) {
            return;
        }

        if (!ApplicationUtils.checkPermission(ApplicationModule.getInstance(), Manifest.permission.WRITE_EXTERNAL_STORAGE))
            return;

        disconnect(databaseName);

        final File fileDb = new File(pathDb);
        final String nameDb = fileDb.getName();
        final String pathBackup = dirBackup + File.separator + nameDb;
        try {
            final File fileBackup = new File(pathBackup);
            final File fileBackupOld = new File(pathBackup + "1");
            if (fileDb.exists()) {
                if (fileBackup.exists()) {
                    final File dir = new File(dirBackup);
                    if (!dir.exists()) {
                        dir.mkdirs();
                    }
                    if (dir.exists()) {
                        if (fileBackupOld.exists()) {
                            fileBackupOld.delete();
                        }
                        if (!fileBackupOld.exists()) {
                            Files.copy(fileBackup, fileBackupOld);
                            if (fileBackupOld.exists()) {
                                fileBackup.delete();
                                if (!fileBackup.exists()) {
                                    Files.copy(fileDb, fileBackup);
                                    if (fileBackup.exists()) {
                                        fileBackupOld.delete();
                                    } else {
                                        Files.copy(fileBackupOld, fileBackup);
                                    }
                                }
                            }
                        }
                    }
                } else {
                    final File dir = new File(dirBackup);
                    if (!dir.exists()) {
                        dir.mkdirs();
                    }
                    if (dir.exists()) {
                        Files.copy(fileDb, fileBackup);
                    }
                }
            }

            connect(klass, nameDb);

            ApplicationUtils.runOnUiThread(() -> ApplicationUtils.showToast(ApplicationModule.getInstance(), ApplicationModule.getInstance().getString(R.string.db_backuped), Toast.LENGTH_LONG, BaseSnackbar.MESSAGE_TYPE_INFO));
        } catch (Exception e) {
            ErrorModule.getInstance().onError(NAME, e);
        }
    }

    @Override
    public synchronized void restore(final String databaseName, final String dirBackup) {
        if (!ApplicationUtils.checkPermission(ApplicationModule.getInstance(), Manifest.permission.WRITE_EXTERNAL_STORAGE))
            return;

        final T db = mDb.get(databaseName);
        if (db == null) {
            return;
        }

        final Class<T> klass = SafeUtils.cast(db.getClass().getSuperclass());
        final String pathDb = db.getOpenHelper().getReadableDatabase().getPath();
        if (StringUtils.isNullOrEmpty(pathDb)) {
            return;
        }

        disconnect(databaseName);

        final File fileDb = new File(pathDb);
        final String nameDb = fileDb.getName();
        final String pathBackup = dirBackup + File.separator + nameDb;
        final File fileBackup = new File(pathBackup);
        if (fileBackup.exists()) {
            try {
                if (fileDb.exists()) {
                    fileDb.delete();
                }
                if (!fileDb.exists()) {
                    Files.createParentDirs(fileDb);
                    final File dir = new File(fileDb.getParent());
                    if (!dir.exists()) {
                        dir.mkdirs();
                    }
                    if (dir.exists()) {
                        Files.copy(fileBackup, fileDb);
                    }
                }

                connect(klass, nameDb);

                ApplicationUtils.runOnUiThread(() -> ApplicationUtils.showToast(ApplicationModule.getInstance(), ApplicationModule.getInstance().getString(R.string.db_restored), Toast.LENGTH_LONG, BaseSnackbar.MESSAGE_TYPE_INFO));
            } catch (Exception e) {
                ErrorModule.getInstance().onError(NAME, e);
            }
        }
    }

...
Рейтинг: 0 / 0
Android Backup Service
    #39612693
larum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот само приложение. .
Думаю оно не стоит того чтобы делать под него свой сервер. Да и информация пользователей будет стекаться ко мне, а это немного неэтично как на меня. Мне не нужна информация пользователей, а то будет большое искушение использоваться ею.
...
Рейтинг: 0 / 0
Android Backup Service
    #39612694
larum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот само приложение
...
Рейтинг: 0 / 0
Android Backup Service
    #39612695
larum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Android Backup Service
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]