Подтвердить что ты не робот

Как удалить общие предпочтения при удалении приложения в android

У меня есть приложение для Android, чтобы сохранить данные для входа, такие как имя пользователя и пароль с помощью SharedPreferences, которые отлично работают, но мне нужно удалить все мои использованные SharedPreferences, пока мое приложение удаляется. Как это сделать?

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

Я хочу удалить этот SharedPreferences, когда мое приложение удалит.

4b9b3361

Ответ 1

Проблема не в настройках. Это решительно менеджер резервного копирования!.. поскольку android-23 по умолчанию резервное копирование в качестве задачи хранит данные приложения, включая настройки для облачных вычислений. Позже, когда вы удалите, установите более новую версию, вы, вероятно, собираетесь использовать восстановленные настройки. Чтобы этого избежать, просто добавьте это в свой манифест (или, по крайней мере, для отладки манифеста):

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

Прочтите это: http://developer.android.com/guide/topics/data/backup.html

Вы также увидите, что если вы запустите Lint под Android > Lint > Security:

lint warning on backup

Здесь хорошо сказать, что процесс резервного копирования похож на черный ящик.. вы не знаете, когда он начинается, и период между проверками... так лучше для разработки, чтобы отключить его.

В качестве альтернативы вы можете очистить кеш до удаления приложения.

Я надеюсь, что это может помочь.

Ответ 2

SharedPreferences всегда удаляется вместе с удалением приложения.

При удалении любого приложения все изменения, внесенные в вашу внутреннюю память, будут отменены, это означает, что ваши файлы SharedPreference, Другие файлы данных, файл базы данных, приложение автоматически удаляются ОС Android.

EDITED: 29/04/15: для >= API API @Maher Abuthraa answer

Ответ 3

Странно, но я нашел решение следующим образом:

  • Добавить xmlns:tools="http://schemas.android.com/tools" в тег манифеста файла Manifest.xml
  • Добавить android:allowBackup="false" в тег приложения файла Manifest.xml
  • Добавить tools:replace="android:allowBackup" в тег приложения файла Manifest.xml

Файл Manifest.xml должен выглядеть следующим образом.

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

Сделано.

Ответ 4

Настройка allowBackup = "false" выбирает приложение из резервной копии и восстановления.