web-dev-qa-db-fra.com

comment supprimer les préférences partagées lors de la désinstallation de l'application dans android

J'ai une application Android pour enregistrer les informations de connexion, telles que le nom d'utilisateur et le mot de passe via SharedPreferences. Cela fonctionne bien, mais je dois supprimer tous mes SharedPreferences utilisés. pendant la désinstallation de mon application. Comment le faire?

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", "");   
   } 

Je souhaite supprimer ce SharedPreferences lors de la désinstallation de mon application.

95
shivcena

Le problème n'est pas avec les préférences. C'est drastiquement le gestionnaire de sauvegarde ! .. depuis la sauvegarde par défaut d'Android-23 en tant que tâche stocke les données de l'application, y compris les préférences pour le cloud. Plus tard, lorsque vous désinstallez puis installez une version plus récente, vous allez probablement utiliser les préférences restaurées. Pour éviter cela, ajoutez simplement ceci à votre manifeste (ou au moins pour le déboguer):

<application ...
        Android:allowBackup="false">
...
</application>

Lisez ceci: http://developer.Android.com/guide/topics/data/backup.html

Vous verrez également que si vous exécutez Lint sous Android > Lint > Security:

lint warning on backup

Il est bon de mentionner ici que le processus de sauvegarde s'apparente à une boîte noire. Vous ne savez pas quand il démarre, et le délai entre les vérifications ... Il est donc préférable de le désactiver.

==== Mise à jour ====

Vous pouvez obtenir des problèmes de fusion du manifeste après avoir défini allowbackup sur false. Pour résoudre ce problème, ajoutez:

tools:replace="Android:allowBackup"

dans l'élément d'application. Crédit à @ shahzain-ALi

Sinon, vous pouvez effacer le cache avant de désinstaller l'application.

J'espère que cela peut aider.

267
Maher Abuthraa

SharedPreferences est toujours supprimé avec la désinstallation de l'application.

Lorsque vous désinstallez une application, toutes les modifications effectuées par votre application dans votre mémoire interne sont révoquées, ce qui signifie que vos fichiers SharedPreference, Autres fichiers de données, Fichier de base de données, Application sont supprimés automatiquement par le Android OS.

EDITED: 29/04/15: for> = 21 API se référer (réponse de @ Maher Abuthraa

17
Dhaval Parmar

C'est étrange mais j'ai trouvé la solution de la manière suivante:

  1. Ajouter xmlns:tools="http://schemas.Android.com/tools" dans balise manifeste de Manifest.xml fichier
  2. Ajouter Android:allowBackup="false" dans balise application sur fichier Manifest.xml
  3. Ajouter tools:replace="Android:allowBackup" dans balise application sur fichier Manifest.xml

Le fichier Manifest.xml devrait ressembler à ceci.

    <?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>

C'est fait.

9
Hiren Patel

Le problème n'est pas avec les préférences.

utilisez ce code pour le réparer ..........

<application
    Android:allowBackup="true"
    Android:fullBackupContent="false"></application>
4
Mohammad Faizan

Réglage allowBackup="false" supprime une application de la sauvegarde et de la restauration.

 Android:allowBackup="false"
3
Mahendran Candy