medium - shared preferences android
cómo eliminar las preferencias compartidas durante la desinstalación de la aplicación en Android (4)
Tengo una aplicación de Android para guardar los detalles de inicio de sesión como el nombre de usuario y la contraseña a través de SharedPreferences
que funciona bien, pero necesito eliminar todas mis SharedPreferences
usadas mientras la aplicación se desinstala. ¿Cómo hacerlo?
SavePreferences("one ", "");
SavePreferences("two", "");
LoadPreferences();
private void SavePreferences(String key, String value){
sharedPreferences = getSharedPreferences("TEST", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
private void LoadPreferences(){
sharedPreferences = getSharedPreferences("TEST", MODE_PRIVATE);
String strSavedMem1 = sharedPreferences.getString("MEM1", "");
String strSavedMem2 = sharedPreferences.getString("MEM2", "");
}
Quiero eliminar esta SharedPreferences
cuando la aplicación se desinstale.
Al establecer allowBackup = "false", se rechaza una aplicación tanto de la copia de seguridad como de la restauración.
El problema no es con las preferencias. ¡Es drásticamente el administrador de respaldo ! .. desde android-23 por copia de seguridad predeterminada como una tarea almacena los datos de la aplicación, incluidas las preferencias a la nube. Luego, cuando desinstales, instalas una versión más nueva, probablemente uses las preferencias restauradas. Para evitar eso, simplemente agregue esto a su manifiesto (o al menos para depurar el manifiesto):
<application ...
android:allowBackup="false">
...
</application>
Lea esto: http://developer.android.com/guide/topics/data/backup.html
También verá que si ejecuta Lint en Android > Lint > Security
:
Es bueno mencionar aquí que el proceso de copia de seguridad es como un blackbox ... no se sabe cuándo comienza, y el período entre revisiones ... así que es mejor desarrollar para deshabilitarlo.
Alternativamente, puede borrar el caché antes de desinstalar la aplicación.
Espero que eso pueda ayudar.
Es extraño, pero encontré la solución de la siguiente manera:
- Agregue
xmlns:tools="http://schemas.android.com/tools"
en la etiqueta de manifiesto del archivo Manifest.xml - Agregar
android:allowBackup="false"
en la etiqueta de la aplicación del archivo Manifest.xml - Agregar
tools:replace="android:allowBackup"
en la etiqueta de la aplicación del archivo Manifest.xml
El archivo Manifest.xml debería verse así.
<?xml version="1.0" encoding="utf-8"?><!--suppress ALL -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.package">
// Other code
<application
android:name="com.package.Application"
android:allowBackup="false"
android:hardwareAccelerated="true"
android:icon="@drawable/appicon"
android:label="@string/application_name"
android:largeHeap="true"
android:theme="@style/AppTheme"
tools:replace="android:allowBackup">
<activity
android:name="com.package.SplashActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/application_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
// Other code
</application>
</manifest>
Está hecho.
SharedPreferences
siempre se elimina junto con la desinstalación de la aplicación.
Cuando desinstala cualquier aplicación, se revocan todos los cambios que la aplicación ha realizado en su memoria interna, es decir, sus archivos SharedPreference, otros archivos de datos, archivo de base de datos, aplicación se eliminan automáticamente por el sistema operativo Android.
EDITADO: 29/04/15: para> = 21 API refiera la respuesta de @Maher Abuthraa