Не удалось восстановить данные из общедоступного хранилища после переустановки приложения Android.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Не удалось восстановить данные из общедоступного хранилища после переустановки приложения Android.

Сообщение Anonymous »

Я разрабатываю приложение для Android, которое использует MediaStore для сохранения файла JSON с данными о продолжительности для конкретного приложения. Я реализовал механизм сохранения данных в общедоступном хранилище и пытаюсь восстановить их после переустановки приложения, но восстановление работает нестабильно.
Текущее поведение:
  • При первой установке и запуске приложения оно сохраняет файл JSON в разделе «Загрузки MediaStore».
  • После удаления и переустановки. приложение, приложению не удается получить ранее сохраненные файл
  • Вместо восстановления существующих данных приложение создает новый файл или запись
< strong>Соответствующий фрагмент кода:
У меня в репозитории есть метод restartTrailsDurationAfterReinstall(), который пытается:
  • Проверьте наличие записи в локальной базе данных.
  • Если локальной записи нет, найдите сохраненный файл в общедоступном хранилище с помощью TrailsDurationPublicStorageManager.findSavedFileUri()
  • Если файл найден, прочитайте и восстановите данные

    Пример кода:

    Код: Выделить всё

    @RequiresApi(Build.VERSION_CODES.Q)
    fun restoreTrailsDurationAfterReinstall(): ResponseWrapper {
    return safeDatabaseCall {
    // Existing local database check
    val localTrailsDuration = database.trailsDurationDao.getTrailsDuration()
    if (localTrailsDuration != null) {
    // Return local data if exists
    }
    
    // Search for file in public storage
    val savedFileUri = TrailsDurationPublicStorageManager.findSavedFileUri(context)
    savedFileUri?.let { uri ->
    val restoredEntity = TrailsDurationPublicStorageManager.getTrailsDurationData(context, uri)
    // Restore logic...
    }
    // Fallback logic...
    }
    }
    
    Вопросы:
    Почему сохраненный файл может не быть найден после переустановки приложения?
    Существуют ли какие-либо рекомендации по обеспечению сохранности данных между переустанавливает приложение?
    Могут ли разрешения или доступ к хранилищу быть причиной этой проблемы?
    Что я пробовал:
    • Реализован механизм сохранения в общедоступном хранилище с использованием Поставщик загрузок MediaStore.
    • Создан метод findSavedFileUri() для поиска ранее сохраненного файла JSON.
    • Добавлен метод восстановления restartTrailsDurationAfterReinstall()< /code> to:

      Сначала проверьте наличие записей в локальной базе данных.
    • Если локальной записи не существует, найдите файл в общедоступном хранилище< /li>
      Попытка прочитать и восстановить данные из найденного файла.
  • Добавлено комплексное ведение журнала для отслеживания поиска файлов. и процесс поиска
Чего я ожидал:
  • При переустановке приложения оно должно успешно найти и восстановить файл JSON, сохраненный во время предыдущего приложения. установка
  • Восстановленные данные должны включать все предыдущее состояние приложения, а именно:

    Статус посещаемости
  • Дата прихода
  • Дата окончания срока действия
  • Ограничение количества нажатий кнопки возобновления

Фактический результат:
  • Приложению не удается найти или прочитать ранее сохраненный файл.
  • Вместо восстановления существующих данных приложение либо:

    Создает новый файл/запись.
  • Возвращает ответ «Данные не найдены».
  • Потенциально теряет ранее сохраненное состояние приложения.


Подробнее здесь: https://stackoverflow.com/questions/792 ... stallation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»