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

Учетные записи вам по-любому понадобятся, иначе ваши базы станут достоянием общественности, и возможно, даже не самой благонадёжной.
...
Рейтинг: 0 / 0
09.03.2018, 09:44
    #39612437
Oleg Shishkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Android Backup Service
Лежит здесь 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
09.03.2018, 21:40
    #39612693
larum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Android Backup Service
Вот само приложение. .
Думаю оно не стоит того чтобы делать под него свой сервер. Да и информация пользователей будет стекаться ко мне, а это немного неэтично как на меня. Мне не нужна информация пользователей, а то будет большое искушение использоваться ею.
...
Рейтинг: 0 / 0
09.03.2018, 21:41
    #39612694
larum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Android Backup Service
Вот само приложение
...
Рейтинг: 0 / 0
09.03.2018, 21:42
    #39612695
larum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Android Backup Service
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Android Backup Service / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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