Приложение карты Android, не может обновить базу данных только для чтения с версии 0 до 1

Я пытался (уже несколько дней) заставить работать приложение карты Android. Это приложение должно работать в автономном режиме, и меня интересует только отображение небольшого города, после того, как я увидел все мои варианты и попробовал их все, кажется, что Nutiteq — отличный выбор, особенно офлайн-вариант MBTiles. После всех настроек и использования файла .mbtiles, загруженного с помощью TileMill, я получаю следующую ошибку:

No such table android_metadata

В скачанном мной файле .mbtile нет этой таблицы, и я не могу найти, какой класс сделал этот запрос (если кто-нибудь может объяснить, зачем это нужно, отлично !!!); я попытался обновить свой файл .mbtile с помощью Navicat, чтобы добавить эту таблицу с желаемым столбцом локали со значением en_US, и теперь он выдает следующее сообщение об ошибке журнала:

can't upgrade read-only database from version 0 to 1

Мои вопросы:

  • Есть ли способ обойти весь этот запрос android_metadata? Я имею в виду, если он не включен в .mbtile, зачем он нужен потом?
  • Если вы не рекомендуете обходить это, как исправить мою вторую ошибку с обновленной базой данных?

Спасибо.


person maxandonuts    schedule 30.09.2013    source источник
comment
Попробуйте использовать флаг SQLiteDatabase.NO_LOCALIZED_COLLATORS при вызове SQLiteDatabase.openDatabase(), чтобы избежать предупреждения android_metadata.   -  person Gaurav Arora    schedule 30.09.2013
comment
Можете ли вы дать конкретный фрагмент кода, как открыть файл (добавить слой)?   -  person JaakL    schedule 30.09.2013
comment
Открытие обрабатывается методом SQLiteOpenHelper getReadableDatabase(), что вызывает проблемы, поскольку нет четкого вызова метода openDatabase(), для которого я могу использовать предложенный флаг. Применим ли этот флаг в другом месте?   -  person maxandonuts    schedule 02.10.2013
comment
Что именно у вас за устройство? Странная ошибка. Nutiteq не должен требовать android_metadata в файлах mbtiles, и у меня он работал с простыми базами данных mbtiles (без android_metadata) на всех устройствах, где я его тестировал.   -  person JaakL    schedule 03.10.2013
comment
stackoverflow.com/a/21253885/2106820   -  person Arfan Mirza    schedule 21.01.2014


Ответы (1)


Вы пытаетесь изменить базу данных во время обновления? Если он доступен только для чтения, вы, вероятно, не сможете его изменить. Однако вы можете создать новый и скопировать данные из старого в новый.

person Peri Hartman    schedule 30.09.2013
comment
На самом деле, я получил это вчера, но переделывая весь код, я еще не разобрался с последним с этой ошибкой, но я попробую, как только смогу, спасибо за ваш ответ. - person maxandonuts; 02.10.2013