studio medium how example create code android android-preferences

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:

  1. Agregue xmlns:tools="http://schemas.android.com/tools" en la etiqueta de manifiesto del archivo Manifest.xml
  2. Agregar android:allowBackup="false" en la etiqueta de la aplicación del archivo Manifest.xml
  3. 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