Предложение CommonsWare было бы хитрым взломом, но, к сожалению, оно не сработает.
Samsung не всегда помещает каталог shared_prefs в тот же родительский каталог, что и getFilesDir()
.
Я бы порекомендовал проверить наличие (жестко закодировать его, за исключением имени пакета): /dbdata/databases/<package_name>/shared_prefs/package.name_preferences.xml
и, если оно существует, использовать его, в противном случае воспользуйтесь предложением CommonsWare new File(getFilesDir(), "../shared_prefs")
или просто /data/data/<package_name>/shared_prefs/package.name_preferences.xml
.
Предупреждение, однако, что этот метод потенциально может иметь проблемы, если пользователь переключился с rom Samsung на пользовательский rom без стирания, поскольку файл /dbdata/databases
может быть неиспользованным, но все еще существует.
Подробнее
На некоторых устройствах Samsung, таких как серия Galaxy S, работающих под управлением froyo, настройка такова:
/data/data/<package_name>/(lib|files|databases)
Иногда там тоже есть shared_prefs, но это всего лишь попытка Samsungсбить вас с толку!Не верь этому!(Я думаю, что это может произойти как переход от обновления 2.1 до 2.2, но это может быть перенесено пользователями, переключающими ромы. Я действительно не знаю, я просто включил оба в интерфейс отчета об ошибках моего приложения и иногда вижуоба файла).
И:
/dbdata/databases/<package_name>/shared_prefs
Это настоящий каталог shared_prefs.
Однако на вкладке Galaxy на Froyo это странно.Как правило, у вас есть: /data/data/<package_name>/(lib|shared_prefs|files|databases)
Без каталога /dbdata/databases/<package_name>
, но, похоже, системные приложения имеют: /dbdata/databases/<package_name>/yourdatabase.db
И дополнительный бонус в том, что /dbdata/databases/<package_name>
не удаляется, когдаВаше приложение удалено.Удачи в использовании SharedPreferences, если пользователь переустанавливает ваше приложение!