Android-разрешение на создание базы данных
Привет у меня есть некоторые проблемы при создании базы данных sqlite в Android.
На эмуляторе все в порядке, я могу создать базу данных. Но на самом деле это не работает. Когда я попытался отладить приложение на своем телефоне, оно просто не смогло создать базу данных.
Так может кто-нибудь сказать мне, что случилось? Есть ли какое-либо специальное разрешение, которое мне нужно добавить в файл манифеста? Я пробовал ACCESS_CHECKIN_PROPERTIES или WRITE_EXTERNAL_STORAGE, но все еще не могу получить базу данных.
Кстати, разве пользовательская база данных может храниться только на SD-карте, но в корневом каталоге?
Большое спасибо!!
5 ответов
Без каких-либо отзывов об ошибке невозможно сказать вам, что не так в вашем коде. Тем не менее, я могу вам сказать, что вам не нужно ACCESS_CHECKIN_PROPERTIES
для использования вашей собственной базы данных. Вам не нужно WRITE_EXTERNAL_STORAGE
либо если вы не пытаетесь получить доступ к SDCard.
По умолчанию базы данных хранятся в подпапке папки вашего приложения во внутреннем хранилище, а именно:
/data/data/YOUR_APP/databases/YOUR_DATABASAE.db
Если вы делаете это на физическом устройстве, оно должно быть рутировано.
Это очень легко решить Вы, должно быть, не добавили расширение.db в свое имя базы данных, объявленное в java-файле db. Например, public static final String DB_NAME = "tasks.db";
НЕ ЗАБЫВАЙТЕ РАСШИРЕНИЯ.db
У меня была точно такая же проблема. Мое приложение создавало БД на эмуляторе, считывало и записывало данные, но оно зависало при работе на устройстве.
Я нашел очень простое решение: удалите базу данных на своем устройстве вручную по адресу /data/data/YOUR_APP/databases/YOUR_DATABASAE.db, а затем снова запустите приложение.
Сработало в моем случае, надеюсь, это поможет.
Возможно, у вас возникла эта проблема, потому что на вашем телефоне установлена предыдущая версия приложения. Перед установкой новой версии попробуйте удалить предыдущую с помощью "Диспетчера приложений". Я решаю таким образом.
Сначала я проверяю разрешения и получаю разрешение во время выполнения, но так как targetSdkVersion было 25, проблема была нерешенной, работа с db без использования EXTENSION of .db всегда была бы хороша и работала, но похоже, что targetSdkVersion из 25 требует EXTENSION. дб и моя проблема решена.
Я очистил данные приложения из приложений из настроек, затем удалил и запустил приложение с переименованием файла db с расширением.db, у меня это работает