як видалити спільні налаштування під час видалення програми в Android


103

У мене є додаток для 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коли видалити мою програму.


11
Це буде видалено автоматично ОС Android при видаленні програми ...
umair.ali

дякую за гідну деталь
shivcena

Не на моєму вкоріненому Samsung Galaxy 1 (Froyo). Ще залишився в /dbdata/database/my.package/shared_prefs. Не знаю, чи це закохане коріння чи тому, що це Froyo. Не вдалося протестувати на новіших пристроях
Nilzor

Відповіді:


19

SharedPreferences завжди видаляється разом із видаленням програми.

Якщо ви видалите будь-яку програму, всі зміни, внесені додатком до вашої внутрішньої пам'яті, скасовуються, це означає, що файли SharedPreference, інші файли даних, файл бази даних, додаток автоматично видаляється ОС Android.

Відредаговано: 29.04.2015: для> = 21 API звертайтесь до відповіді @Maher Abuthraa


10
Це не те, що стосується Nexus 6P, зараз це з'ясовується.
AndyRoid

1
Так, я також зауважував, що в Nexus 5 під керуванням Android 6 не видалено спільні налаштування. Мені довелося перезапустити пристрій після видалення, і тепер
спільні

2
Galaxy s7 тут з тією ж проблемою. Я Видаліть та встановив після установки спільні налаштування все ще встановлені. Дійсно дратує, тому що я не можу перевірити свіжі встановлення, просто видаливши його.
Дпедрінья

2
@Maher Abuthraa має правильну відповідь, ця відповідь неправильна.
Юрій Мазуревич

1
Пристрій Samsung s8 s8 + також не видаляє спільні налаштування, я нещодавно тестую. Дуже розчарований у Samsung
Vrajesh

299

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

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

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

Ви також побачите, що якщо запустити Lint під Android > Lint > Security:

попередження про ворсинку на резервній копії

Тут добре згадати, що процес резервного копіювання - це як чорний ящик. Ви не знаєте, коли він починається, і проміжок часу між чеками ... так що краще для розробки, щоб його відключити.

==== Оновлення ====

Ви можете отримати проблеми з злиттям Manifest після встановлення allowbackupна false. Щоб виправити цю проблему, додайте:

tools:replace="android:allowBackup"

в елементі додатка. Заслуга @ shahzain-ali

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

Я сподіваюся, що це може допомогти.


4
Привіт, я помітив, що на деяких пристроях спільні налаштування зберігаються після видалення програми для перезавантаження пристрою. Це пов’язано з цим? Якщо так, чи безпечно встановити цей прапор значення false на виробничих додатках? Чи вплине це на користувача?
Еліаху Хорвіц

Не рекомендується встановлювати помилки на виробництві .. Користувач втрачає всі налаштування під час оновлення. Краще на виробництві мігрувати дані, якщо це потрібно .. у коді налагодження та налаштування можуть багато разів змінюватися, де краще вимкнути резервну копію
Maher Abuthraa

1
Kudos @MaherAbuthraa .. Я зіткнувся з цим питанням щодо збереження певних загальних даних про переваги після видалення та перевстановлення програми. Ніколи не знав, що таке робиться.
SoulRayder

1
Дуже дякую! ти врятував мені життя.
hangtdo

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

10

Це дивно, але я знайшов рішення наступним чином:

  1. Додати xmlns:tools="http://schemas.android.com/tools"в маніфесті тег з Manifest.xml файлу
  2. Додайте android:allowBackup="false"в тег програми файл Manifest.xml
  3. Додайте 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>

Зроблено.


2
У вашій проблемі був один із ваших модулів / AAR має android: enableBackup = "true". Ось чому вам потрібно знову встановити його за допомогою інструментів атрибутів: замінити.
Maher Abuthraa

Незважаючи на те, я все android:allowBackup="false"і по- tools:replace="android:allowBackup", як і раніше отримувати мої уподобання, Будь-яку ідею в чому проблема?
Шилендра Мадда

Я також отримую те саме питання. Після додавання цього коду не вдалося очистити преференцію
Pawan Soni

5

Проблема не в уподобаннях.

використовувати цей код для його виправлення ..........

<application
    android:allowBackup="true"
    android:fullBackupContent="false"></application>

Це допомогло. До речі, чому ми не встановимо резервне копіювання на false?
Шакле


-1

Налаштування спільного користування не завжди видаляються більше, ніж з зефіру. Додайте цей рядок у свій маніфест: "android: enableBackup =" false ""

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.