Как удалить сохраненные данные в общих настройках в Android?
Я использую API Facebook в моем приложении. Работает нормально, я могу войти и разместить на стене. Но я не мог удалить информацию для входа.
Это код
public boolean saveCredentials(Facebook facebook) {
Editor editor = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE).edit();
editor.putString(TOKEN, facebook.getAccessToken());
editor.putLong(EXPIRES, facebook.getAccessExpires());
return editor.commit();
}
public boolean restoreCredentials(Facebook facebook) {
SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE);
facebook.setAccessToken(sharedPreferences.getString(TOKEN, null));
facebook.setAccessExpires(sharedPreferences.getLong(EXPIRES, 0));
return facebook.isSessionValid();
}
public boolean removeCredentials()
{
SharedPreferences prefs = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE);
facebook.setAccessToken(prefs.getString("", null));
facebook.setAccessExpires(prefs.getLong("", 0));
Editor editor = prefs.edit();
editor.clear();
editor.commit();
return true;
}
Детали общих настроек не были удалены при вызове removeCredentials()
метод. Это просто опубликовать сообщение на стене Facebook.
Я просто хочу удалить сохраненные данные, и если пользователь снова попросит опубликовать сообщение на стене, мне нужно будет открыть экран входа в систему.
Спасибо за помощь ребята
4 ответа
См ссылку ниже
/questions/46590871/udalenie-obschih-nastroek/46590956#46590956
SharedPreferences.Editor.remove() followed by a commit()
или же
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
Я использовал в своем проекте, он работает идеально..
Preferences = getSharedPreferences ("здесь имя вашего предпочтения", Context.MODE_PRIVATE);
- редактор = предпочтения.edit ();
- editor.clear ();
- editor.commit ();
Проблема в том, что (IMO) вы удаляете учетные данные из SharedPreferences
, который удаляет ваш токен и дату только из SharePreferences.
Но вы не аннулируете свой facebook
Сеанс объекта, вот почему, на данный момент ваш Facebook имеет Token и Date в своих переменных поля, и он может публиковать это сообщение.
Так как
- когда объект facebook создан, он автоматически получает эти учетные данные
SharedPreferences
, - Затем вы удалите учетные данные
- но у объекта facebook есть учетные данные, попробуйте их тоже аннулировать.
Обновление: поэтому, когда вы аннулировали их, всегда проверяйте сеанс, прежде чем публиковать какие-либо действия в Facebook, например:
facebook.isSessionValid(); //checks if the session valid
val preferences = getSharedPreferences(AppConstants.TAG, Context.MODE_PRIVATE);
preferences.edit().remove(AppConstants.USER_RESPONSE).commit();