Не удалось создать каталог для SharedPreferences или базы данных

У нас происходит сбой при запуске приложения, и оно пытается создать общие настройки и прочитать их из базы данных. Это происходит на разных устройствах, в основном HTC, но также и LG, на которых работает Gingerbread, и они не имеют root-прав.

E/ApplicationContext(2630): Couldn't create directory for SharedPreferences file /data/data/com.example.project/shared_prefs/com.example.project_preferences.xml

E/Database(2630): sqlite3_open_v2("/data/data/com.example.project/databases/project.db", &handle, 6, NULL) failed

Мы инициализируем SharedPreferences с помощью Roboguice.

Удаление приложения и его повторная установка, похоже, помогают, но мы не можем сказать об этом нашим пользователям.

Я осмотрелся и обнаружил, что люди обычно сталкиваются с этой проблемой на устройствах с root-правами или на определенных устройствах Samsung.

Заранее спасибо!

Примечание: наше настоящее имя пакета уникально, я изменил его в приведенном выше коде, чтобы оно не было общедоступным.


person cperes    schedule 25.04.2013    source источник
comment
Я также вижу подобные вещи в своих отчетах об ошибках. Я думаю, что в ОС есть ошибка, которая иногда оставляет приложения без возможности доступа к своим собственным файлам и т. д. Часто вызывается обновлениями ОС. Удалить и переустановить - единственное решение, которое я нашел. Я полагаю, вы могли бы написать свое приложение таким образом, чтобы оно сохраняло все на SD-карту/внутреннюю память вместо защищенного хранилища приложения.   -  person Lance Nanek    schedule 26.04.2013
comment
Спасибо Ланс! Вот где мы видим это, в наших отчетах о сбоях криттеризма. Мы думаем, что это проблема ОС. Спасибо за предложение, мы можем попробовать это!   -  person cperes    schedule 26.04.2013


Ответы (2)


Вам нужно добавить разрешения в свой AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

У меня та же проблема, что и у вас, и я решил ее с помощью вышеуказанного решения. Я думаю, вы тоже должны забыть разрешения. Попытайся.

person drakeet    schedule 16.06.2015

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

person David Wasser    schedule 25.04.2013
comment
Спасибо, Дэвид, но имя нашего пакета приложения не то, я изменил его, так как не хочу публиковать. Наша уникальна, так что проблема не в этом. Спасибо! - person cperes; 26.04.2013