Android как удалить sharedpreferences

SharedPreferences

Чтобы получить экземпляр класса SharedPreferences для получения доступа к настройкам в коде приложения используются три метода:

  • getPreferences() — внутри активности, чтобы обратиться к определённому для активности предпочтению;
  • getSharedPreferences() — внутри активности, чтобы обратиться к предпочтению на уровне приложения;
  • getDefaultSharedPreferences() — из объекта PreferencesManager, чтобы получить общедоступную настройку, предоставляемую Android.

Все эти методы возвращают экземпляр класса SharedPreferences, из которого можно получить соответствующую настройку с помощью ряда методов:

  • getBoolean(String key, boolean defValue)
  • getFloat(String key, float defValue)
  • getInt(String key, int defValue)
  • getLong(String key, long defValue)
  • getString(String key, String defValue)

Обратите внимание, что тип double не поддерживается.

Чтобы создать или изменить Общие настройки, нужно вызвать метод getSharedPreferences в контексте приложения, передав имя общих настроек (имя файла):

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

  • MODE_APPEND — присоединяет новые настройки к существующим
  • MODE_ENABLE_WRITE_AHEAD_LOGGING
  • MODE_MULTI_PROCESS
  • MODE_WORLD_READABLE — позволяет другим приложениям читать настройки
  • MODE_WORLD_WRITEABLE — позволяет другим приложениям записывать новые настройки

Для любознательных могу добавить, что файлы настроек хранятся в каталоге /data/data/имя_пакета/shared_prefs/имя_файла_настроек.xml. Поэтому в отладочных целях, если вам нужно сбросить настройки в эмуляторе, то при помощи перспективы DDMS, используя файловый менеджер, зайдите в нужную папку, удалите файл настроек и перезапустите эмулятор, так как эмулятор хранит данные в памяти, которые он сбрасывает в файл. На устройстве вы можете удалить программу и поставить ее заново, то же самое можно сделать и на эмуляторе, что бывает проще, чем удалять файл настроек вручную и перезапускать эмулятор.

Если открыть файл настроек текстовым редактором, то можно увидеть приблизительно такое:

В данном случае в настройках хранятся только строковые значения.

Сохранение значений параметров

Для удобства создадим константу для имени файла настроек, например:

Далее нужно создать параметры, которые вы хотите сохранять в настройках. Удобнее их сделать константами:

Когда вы определили названия параметров, то можете сохранять любые значения этих параметров. Для этого создаём переменную, представляющую экземпляр класса SharedPreferences:

Внутри метода onCreate() вы инициализируете эту переменную:

Вы передаёте в указанный метод название вашего файла (он будет создан автоматически) и стандартное разрешение, дающее доступ только компонентам приложения.

Чтобы внести изменения в настройки (редактировать), нужно использовать класс SharedPreferences.Editor. Получить объект Editor можно через вызов метода edit объекта SharedPreferences, который вы хотите изменить. После того, как вы внесли все необходимые изменения, вызовите метод commit() или apply() объекта Editor, чтобы изменения вступили в силу. Метод apply() появился в API 9 и работает в асинхронном режиме, что является более предпочтительным вариантом. Метод commit() приходится использовать для старых версий и кроме того, он возвращает значение true в успешном случае и false в случае ошибки. Если вам надо отслеживать ошибки, то используйте его.

Предположим, что у нас есть два текстовых поля, где пользователь должен ввести имя кота и его и возраст. Чтобы сохранить параметр, нужно получить текст, который ввел пользователь, через метод getText().toString():

Читайте также:  Ppsspp android iso file

Получив нужный текст, сохраняем его через метод putString() (есть также putLong(), putBoolean() и т.п.):

Как правило, параметры сохраняют в методах активности onPause() или onStop() в тех случаях, когда данные требуются сохранить между запусками приложения. Но могут быть и другие сценарии.

Чтение значений параметров

Для считывания данных при загрузке приложения обычно используют методы onCreate() или onResume(). Нам нужно получить доступ к настройкам программы и проверить, есть ли среди них нужный нам параметр. Нас интересует ключ Nickname. Если мы его найдём, то загрузим его значение в текстовое поле.

В этих строчках кода мы проверили существование параметра APP_PREFERENCES_NAME и получили его значение через getString(), передавая ключ и значение по умолчанию (используется в том случае, если для данного ключа пока что не сохранено никакое значение). Осталось только загрузить полученный результат в текстовое поле.

Аналогично поступаем и с другими параметрами через методы get () (getLong, getBoolean() и т.д.).

Если вам ещё не понятно, то ниже исходный код:

Показать код (щелкните мышкой)

Можно получить ассоциативный массив со всеми ключами и значениями через метод getAll(). После этого можно проверить наличие конкретного ключа с помощью метода contains().

Очистка значений

Для очистки значений используйте методы SharedPreferences.Editor.remove(String key) и SharedPreferences.Editor.clear().

Методы getStringSet() и putStringSet()

Начиная с API 11, у класса SharedPreferences появился новый метод getStringSet(), а у класса SharedPreferences.Editor родственный ему метод putStringSet(). Данные методы позволяют работать с наборами строк, что бывает удобно при большом количестве настроек, которые нужно сразу записать или считать.

Удаление файла

Как я уже сказал, файл настроек хранится в /data/data/имя_пакета/shared_prefs/имя_файла_настроек.xml. Вы можете удалить его программно, например так:

Учтите, что данные могут оставаться в памяти и временном файле *.bak. Поэтому, даже после удаления файла, он может заново воссоздаться. Вообще удалять файл не рекомендуется. Он автоматически удалится при удалении самой программы.

Метод getPreferences() — Сохранение состояния активности

Если вы хотите сохранить информацию, которая принадлежит активности и не должна быть доступна другим компонентам (например, переменным экземпляра класса), вы можете вызвать метод Activity.getPreferences() без указания названия Общих настроек. Доступ к возвращённому ассоциативному массиву Общих настроек ограничен активностью, из которой он был вызван. Каждая активность поддерживает только один безымянный объект Общих настроек.

Сохранение настроек на SD-карту

Сам файл с настройками хранится в системе и обычному пользователю он не виден. Если вам понадобится получить все значения, хранимые в настройках, то вы можете считать все данные при помощи метода getAll() и записать их в файл, который можно сохранить на SD-карте:

Я у тебя первый?

Предположим, вы хотите выводить пользователю какую-то информацию при первом запуске приложения (краткую инструкцию, заставку и т.п.).

Запомнить пользователя

Иногда требуется запомнить имя пользователя или другие данные (пин-код, номер телефона и т.д.). В этом случае вам также подойдут предпочтения, когда вы просто сохраняете нужную строку из текстового поля:

Запомнить состояние переключателей

Если нужно запомнить состояние переключателей, то код может быть таким. Создадим разметку с тремя переключателями.

Код, который отслеживает выбор переключателя и записывает состояние в настройки.

Читайте также:  Смартфон без андроида как установить

getDefaultSharedPreferences()

В используемых примерах я использовал getSharedPreferences() с придумыванием имени файла для хранения настроек. Этот способ придаёт гибкости в том случае, когда вам нужно создать несколько отдельных файлов. Но если вам нужен один файл, то можно ничего не придумывать, а использовать метод getDefaultSharedPreferences() из объекта PreferencesManager. Система сама сгенерирует имя файла из имени вашего пакета с добавлением слова _preferences. Вот как выглядит связка из трёх методов в исходниках Android (обратите внимание на выделенный текст).

Поэтому примеры можно переделать следующим образом.

Удаляем файл настроек

В API 24 появился новый метод, позволяющий удалить сам файл настроек. До этого можно было удалить своими силами, зная его местоположение. Поэтому универсальный код будет приблизительно следующим.

Источник

Как удалить данные общих настроек из приложения в Android

Как удалить данные SharedPreferences для моего приложения?

Я создаю приложение, которое использует множество веб-сервисов для синхронизации данных. В целях тестирования мне нужно стереть некоторые значения SharedPreferences при перезапуске приложения.

Чтобы удалить определенные значения: SharedPreferences.Editor.remove (), а затем commit()

Чтобы удалить их все, SharedPreferences.Editor.clear() а затем commit()

Если вас не волнует возвращаемое значение, и вы используете его из основного потока вашего приложения, рассмотрите возможность его использования apply() .

Удаление всех настроек:

Удаление одного предпочтения:

Если нет необходимости удалять каждый раз, вы можете удалить его вручную из:

Настройки -> Приложения -> Управление приложениями -> (выберите приложение) -> Очистить данные или удалить

Новые версии Android:

Настройки -> Приложения -> (выберите приложение) -> Хранилище -> Очистить данные и Очистить кеш

Удаление общих настроек Android в одну строку 🙂

Или apply для неблокирующей асинхронной операции:

Кажется, что все решение не полностью работает или устарело

очистить все SharedPreferences в деятельности

Вызовите это из основной активности после onCreate

примечание * я использовал .apply() вместо .commit() , вы можете выбрать commit ();

Вы можете использовать оболочку adb, чтобы сделать это даже без рутированного телефона. Единственный улов в том, что приложение должно быть отлаживаемым.

В качестве альтернативы, вы можете просто сделать выше, но без команды, которая направит вас к корню пакета приложения и позволит вам выполнять больше команд в контексте приложения.

Источник

Удалить файл SharedPreferences

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

Мой вопрос: «Как я могу удалить (не просто очистить) файл SharedPreferences ?»

Если вы получаете экземпляр SharedPreferences через Context.getSharedPreferences(«X») , то ваш файл будет называться X.xml .

Он будет расположен по адресу /data/data/com.your.package.name/shared_prefs/X.xml . Вы можете просто удалить этот файл из этого места. Также проверьте файл /data/data/com.your.package.name/shared_prefs/X.bak , и если он существует, удалите его тоже.

Но имейте в SharedPreferences , что экземпляр SharedPreferences сохраняет все данные в памяти. Поэтому сначала вам нужно очистить настройки, зафиксировать изменения и только затем удалить файл резервных копий предпочтений.

Этого должно быть достаточно для реализации вашего проектного решения.

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

Обратите внимание, что при использовании вами используется для тестирования модулей Android. И вы используете sharedpreferences в своем классе Application , это может привести к состоянию гонки, и может не работать должным образом.

Читайте также:  Papa pizzeria для андроид

Его простой гений!

Путь к файлу preference.xml по умолчанию sd card может быть: / data / data / ваше имя пакета / shared_prefs / ваш общий XML-файл предпочтений .

Например, /data/data/com.hirecraft.hirecraftmanager/shared_prefs/swipe_preferences.xml .

Удалить файл предпочтения xml:

Источник

How to delete shared preferences data from App in Android

How do I delete SharedPreferences data for my application?

I’m creating an application that uses a lot of web services to sync data. For testing purposes, I need to wipe out some SharedPreferences values when I restart the app.

27 Answers 27

To remove specific values: SharedPreferences.Editor.remove() followed by a commit()

To remove them all SharedPreferences.Editor.clear() followed by a commit()

If you don’t care about the return value and you’re using this from your application’s main thread, consider using apply() instead.

Removing all preferences:

Removing single preference:

If it’s not necessary to be removed every time, you can remove it manually from:

Settings -> Applications -> Manage applications -> (choose your app) -> Clear data or Uninstall

Newer versions of Android:

Settings -> Applications -> (choose your app) -> Storage -> Clear data and Clear cache

Deleting Android Shared Preferences in one line 🙂

Or apply for non-blocking asynchronous operation:

Seems that all solution is not completely working or out-dead

to clear all SharedPreferences in an Activity

Call this from the Main Activity after onCreate

note* i used .apply() instead of .commit() , you are free to choose commit();

As of API 24 (Nougat) you can just do:

However, there is no backward compatibility, so if you’re supporting anything less than 24, stick with:

You can use the adb shell to do this even without a rooted phone. The only catch is that the app must be debuggable.

Alternatively, you can just do the above but without the command which will direct you to the app package root and allow you to execute more commands in the app’s context.

In the class definitions:

Inside the class:

You can also just manually uninstall your app using your device. Then when you re-install your app, shared preferences have been reset.

You can always do it programmatically as suggested by the other answers over here. But for development purpose, I find this Plugin very helpful as it speeds up my development significantly.

PLUGIN: ADB Idea

It provides you with features to Clear App Data and Revoke Permission from your Android Studio itself, just with click of a button.

If it is for your testing. You can use adb commands.

This will delete the saved shared preferences with the name «someTag».

To clear all SharedPreferences centrally from any class:

And then from any class: (commit returns a Boolean where you can check whether your Preferences cleared or not)

Or you can use apply; it returns void

To remove the key-value pairs from preference, you can easily do the following

I have also developed a library for easy manipulation of shared preferences. You may find the following link

Источник

Оцените статью