Respostas:
Para remover valores específicos: SharedPreferences.Editor.remove () seguido por umcommit()
Para removê-los todos SharedPreferences.Editor.clear()
seguidos por umcommit()
Se você não se importa com o valor de retorno e o está usando no encadeamento principal do aplicativo, considere usá-lo apply()
.
Minha solução:
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
"text"
.
Removendo todas as preferências:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();
Removendo a preferência única:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();
KeyName
?
Se não for necessário remover sempre, você pode removê-lo manualmente de:
Configurações -> Aplicativos -> Gerenciar aplicativos -> (escolha seu aplicativo) -> Limpar dados ou Desinstalar
Versões mais recentes do Android:
Configurações -> Aplicativos -> (escolha seu aplicativo) -> Armazenamento -> Limpar dados e Limpar cache
Excluindo as preferências compartilhadas do Android em uma linha :-)
context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();
Ou apply
para operação assíncrona sem bloqueio:
this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
Parece que toda solução não está completamente funcionando ou morta
limpar todas as Preferências Compartilhadas em uma Atividade
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().clear().apply();
Chame isso da Atividade principal após onCreate
note * eu usei em .apply()
vez de .commit()
, você é livre para escolher commit ();
Você pode usar o shell adb para fazer isso mesmo sem um telefone root. O único problema é que o aplicativo deve ser depurável.
run-as <your package name> <command>
Por exemplo:
run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db
Como alternativa, você pode fazer o acima, mas sem o comando que o direcionará para a raiz do pacote de aplicativos e permitirá que você execute mais comandos no contexto do aplicativo.
run-as
. Você pensaria que eu teria encontrado isso depois de 3 anos ...
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
A partir da API 24 (Nougat), você pode:
context.deleteSharedPreferences("YOUR_PREFS");
No entanto, não há compatibilidade com versões anteriores; portanto, se você estiver suportando algo menor que 24, fique com:
context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply();
Limpe todos eles:
PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
Você também pode desinstalar manualmente seu aplicativo usando seu dispositivo. Então, quando você reinstalar o aplicativo, as preferências compartilhadas foram redefinidas.
Nas definições de classe:
private static final String PREFERENCES = "shared_prefs";
private static final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
Dentro da turma:
public static void deleteAllSharedPrefs(){
sharedPreferences.edit().clear().commit();
}
Tente este código:
SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
SharedPreferences.Editor remove (chave String) seguido por um commit () ou um apply ()
Para remover todos os valores,
SharedPreferences.Editor clear () seguido por um commit () ou um apply ()
Para remover os pares de valores-chave da preferência, você pode facilmente fazer o seguinte
getActivity().getSharedPreference().editor().remove("key").apply();
Também desenvolvi uma biblioteca para facilitar a manipulação de preferências compartilhadas. Você pode encontrar o seguinte link
Para limpar todas as SharedPreferences centralmente de qualquer classe:
public static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
E então de qualquer classe: (commit retorna um Booleano onde você pode verificar se suas Preferências foram limpas ou não)
Navigation.getEditor(this).clear().commit();
Ou você pode usar aplicar; retorna nulo
Navigation.getEditor(this).clear().apply();
new File(context.getFilesDir(), fileName).delete();
Eu posso excluir o arquivo em preferências compartilhadas com ele
Nenhuma das respostas funciona para mim, pois tenho muitas chaves de preferências compartilhadas.
Digamos que você esteja executando um Teste do Android em vez de um teste de unidade.
Está funcionando para mim fazer loop e excluir através de todos os arquivos shared_prefs .
@BeforeClass será executado antes de todos os testes e ActivityTestRule
@BeforeClass
public static void setUp() {
Context context = InstrumentationRegistry.getTargetContext();
File root = context.getFilesDir().getParentFile();
String[] sharedPreferencesFileNames = new File(root, "shared_prefs").list();
for (String fileName : sharedPreferencesFileNames) {
context.getSharedPreferences(fileName.replace(".xml", ""), Context.MODE_PRIVATE).edit().clear().commit();
}
}
A maneira Kotlin ktx de limpar todas as preferências:
val prefs: SharedPreferences = getSharedPreferences("prefsName", Context.MODE_PRIVATE)
prefs.edit(commit = true) {
clear()
}
Clique aqui para todas as operações de preferências compartilhadas com exemplos
Você pode usar preferences.edit().remove("key").commit()
para excluir valores salvos das preferências compartilhadas.
Só fiz isso esta manhã. Em um prompt de comando:
adb shell
cd /data/data/YOUR_PACKAGE_NAME/shared_prefs
rm * // to remove all shared preference files
rm YOUR_PREFS_NAME.xml // to remove a specific shared preference file
OBSERVAÇÃO : isso requer um dispositivo raiz, como os dispositivos virtuais Android padrão, um dispositivo Genymotion ou um aparelho / tablet com raiz real etc.
/data/data
diretamente!
su
depois adb shell
para abrir um shell privilegiado.