создание резервной копии SQLite в корне SD-карты - PullRequest
0 голосов
/ 21 ноября 2018

Как мне сделать резервную копию моего SQLiteDatabase в корне моей SD-карты вместо com.jti.mikee.jti_pos.потому что проблема, с которой я сталкиваюсь сейчас, это когда я удаляю приложение.имя пакета на SD-карте было удалено.даже резервные копии sql.Я разрабатываю на устройстве Android 4.4

Это мой код для резервного копирования базы данных:

private void DBBackup() {
    try {
        File[] sd = getContext().getExternalFilesDirs(null);
        File data = Environment.getDataDirectory();

        if (sd[1].canWrite()) {
            String currentDBPath = "/data/com.jti.mikee.jti_pos/databases/" + DBHelper.DB_NAME;
            String backupDBPath =DBHelper.DB_NAME;
            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(sd[1], backupDBPath);

            if (currentDB.exists()) {
                FileChannel src = new FileInputStream(currentDB).getChannel();
                FileChannel dst = new FileOutputStream(backupDB).getChannel();
                dst.transferFrom(src, 0, src.size());
                src.close();
                dst.close();
            }
        }
    } catch (Throwable e) {
        e.printStackTrace();
    }
}

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

это должно вернуть внутреннее хранилище на [0] и внешнее хранилище на [1]:

File[] paths = ContextCompat.getExternalFilesDirs(getContext(), null);

или ...

File sdcard = Environment.getExternalStorageDirectory();
String path = sdcard.getAbsolutePath();

.getAbsolutePath() может бытьХитрость здесь - для обоих способов получения дескриптора.

0 голосов
/ 21 ноября 2018

getContext (). GetExternalFilesDirs (null) возвращает где-то на SD-карте, но все еще принадлежит приложению.

Вы должны использовать Environment.getExternalStorageDirectory ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...