Android не может сделать копию базы данных

Я пытаюсь настроить задачу Tasker, которая удалит все тревоги в часах. Я настроил его и отлично работал на моем старом телефоне. То, что я сделал, было скопировано из базы данных сигналов тревоги, когда сигналов тревоги не было. Когда я хочу удалить сигналы тревоги, которые установлены в данный момент, Tasker запускает команду оболочки, чтобы удалить текущую базу данных с сигналами в ней. Затем Tasker запускает команду оболочки, чтобы скопировать пустую базу данных и переименовать ее. Затем некоторые команды для изменения разрешений и владельца.

Когда я попытался перенести все это на свой новый телефон, я столкнулся с некоторыми проблемами. Новый телефон One Plus 3, чего он стоит. Поэтому я скопировал все, и единственное, что выглядело так, как будто это нужно было изменить, - это имя пакета для команд оболочки. Я изменил это и попробовал задачу Tasker. Неудачно. Приложение часов застыло. Я восстановил все из своих резервных копий. Я решил сделать некоторое тестирование, чтобы увидеть, где проблема.

Я использовал приложение Root Explorer для копирования базы данных сигналов тревоги. Когда я попытался открыть скопированную базу данных, я получил следующее сообщение об ошибке:

Произошла ошибка при открытии базы данных. Попытка вызвать виртуальный метод 'android.database.Cursor android.database.sqlite.SQLiteDatabase.query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String)'для ссылки на пустой объект

Я все еще могу открыть исходную базу данных просто отлично. Но, кажется, что-то происходит, когда я делаю копию этого. Любое понимание было бы большой помощью. Спасибо

1 ответ

Решение

Проблема как я понимаю
Вы говорите: "Когда я копирую базу данных, я получаю сообщение об ошибке", если она находится в процессе копирования, тогда это тривиально, если вы этого не имеете в виду, тогда говорите это. Двигаемся дальше... Вы скопировали базу данных sqlite откуда-то, куда-то (вы не говорите, где, это может иметь значение), и у вас нет разрешения на ее открытие [возможно, вы делаете, а затем говорите, дайте ВСЕ разрешения] (но вы можете открыть оригинал). File Permissions приходит на ум (права пользователя на файл). Этот метод работает на старом телефоне, но теперь НЕ работает на новом (версии API были бы полезны, эти методы изменили LOT). Ошибка касается запросов курсора. см. мой ответ о курсоре и управлении курсором Не думайте, что ваш исходный код был идеальным, потому что он работал. Требуется больше деталей. Разместите минимальный код, который связан с ошибкой. Мы не пытаемся украсть ваш код, мы не можем ответить на ваш вопрос, не увидев код, который заставляет его упасть, как мы можем это сделать? ТАКЖЕ включить катлог. Вы никогда не знаете, мы могли бы дать вам код, который работает;O)

Другие вопросы по тегам