android'de uygulama kaldırılırken paylaşılan tercih nasıl kaldırılır


103

Kullanıcı adı ve şifre gibi giriş bilgilerini bu şekilde kaydetmek için bir android uygulamam var SharedPreferences, ancak SharedPreferencesuygulama kaldırılırken kullandığım tüm bilgileri kaldırmam gerekiyor. Nasıl yapılır?

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

SharedPreferencesUygulamam kaldırıldığında bunu kaldırmak istiyorum .


11
Bu, uygulama kaldırıldığında Android işletim sistemi tarafından otomatik olarak kaldırılacaktır ...
umair.ali


Köklü Samsung Galaxy 1 (Froyo) cihazımda değil. Hala içeride kaldı /dbdata/database/my.package/shared_prefs. Bunun köklü mü, yoksa Froyo mu olduğunu bilmiyorum. Daha yeni cihazlarla test
edemedim

Yanıtlar:


20

SharedPreferences her zaman uygulamanın kaldırılmasıyla birlikte silinir.

Herhangi bir uygulamayı kaldırdığınızda, uygulamanın dahili belleğinizde yaptığı tüm değişiklikler iptal edilir; bu, SharedPreference dosyalarınız, Diğer veri dosyalarınız, Veritabanı dosyanız, Uygulamanızın Android işletim sistemi tarafından otomatik olarak kaldırıldığı anlamına gelir.

DÜZENLENEN: 29/04/15:> = 21 API için @Maher Abuthraa'nın cevabına bakın


10
Nexus 6P'deki durum değil, bunu hemen şimdi anlıyorum.
AndyRoid

1
Evet, ayrıca Android 6 ile çalışan Nexus 5'in paylaşılan tercihleri ​​silmediğini gözlemledim. Kaldırdıktan sonra cihazı yeniden başlatmam gerekti ve paylaşılan tercihler artık kayboldu
Santhana

2
Galaxy s7 burada aynı problemle. Kaldırdım ve yüklemeden sonra paylaşılan tercihler hala ayarlı. Gerçekten can sıkıcı çünkü yeni yüklemeleri sadece kaldırarak test edemiyorum.
Dpedrinha

2
@Maher Abuthraa'nın doğru cevabı var, bu cevap yanlış.
Юрій Мазуревич

1
Samsung s8 s8 + cihazı da paylaşılan tercihi silmiyor, yakın zamanda test ettim. Samsung ile gerçekten hayal kırıklığına uğradım
Vrajesh

299

Sorun tercihlerde değil. Bu büyük ölçüde yedekleme yöneticisi ! .. çünkü android-23 varsayılan olarak bir görev olarak yedekleme, bulut tercihleri ​​dahil olmak üzere uygulamanın verilerini depolar. Daha sonra, yeni sürümü kaldırıp kurduğunuzda, muhtemelen geri yüklenen tercihleri ​​kullanacaksınız. Bunu önlemek için, bunu bildiriminize eklemeniz yeterlidir (veya en azından bildirimde hata ayıklamak için):

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

Şunu okuyun: http://developer.android.com/guide/topics/data/backup.html

Ayrıca Lint'i altında çalıştırırsanız şunları da göreceksiniz Android > Lint > Security:

yedeklemede tüy bırakma uyarısı

Burada yedekleme işleminin bir kara kutu gibi olduğunu belirtmekte fayda var .. Ne zaman başladığını ve kontroller arasındaki süreyi bilmiyorsunuz ... onu devre dışı bırakmak için geliştirmek için çok daha iyi.

==== Güncelle ====

Sen ayarladıktan sonra Manifest birleşme sorunları alabilirsiniz allowbackupetmek false. Bu sorunu çözmek için şunu ekleyin:

tools:replace="android:allowBackup"

uygulama öğesinde. @ Shahzain-ali'ye kredi

Alternatif olarak, uygulamayı kaldırmadan önce önbelleği temizleyebilirsiniz.

Umarım bu yardımcı olabilir.


4
Hey, bazı cihazlarda cihaz yeniden başlatıldıktan sonra paylaşılan tercihlerin korunduğunu fark ettim. Bununla bağlantılı mı? Öyleyse, üretim uygulamalarında bu bayrağı yanlış olarak ayarlamak güvenli midir? Kullanıcıyı etkileyecek mi?
Eliahu Horwitz

Üretimde yanlış ayarlanması tavsiye edilmez .. kullanıcı güncelleme sırasında tüm tercihlerini kaybedecektir .. Gerekirse verileri taşımak için üretimde daha iyidir .. hata ayıklama kodunda ve tercihlerde birçok kez değişebilir nerede yedeklemeyi kapatmanın daha iyi olduğu
Maher Abuthraa

1
Kudos @MaherAbuthraa .. Uygulama kaldırılıp yeniden yüklendikten sonra bazı paylaşılan tercih verilerinin saklanmasıyla ilgili bu sorunla karşı karşıyaydım. Böyle bir şeyin yapıldığını asla bilmiyordum.
SoulRayder

1
Çok teşekkürler! Hayatımı kurtardın.
hungtdo

Güncelleme sırasında tercihlerin korunduğundan ancak manuel kaldırmada kaldırıldığından nasıl emin olabilirim? Elbette bu beklenen davranış olacaktır.
Gannet

10

Garip ama çözümü şu şekilde buldum:

  1. Ekle xmlns:tools="http://schemas.android.com/tools"içinde tezahür etiketinin ait Manifest.xml dosyası
  2. Ekle android:allowBackup="false"yılında uygulama etiketinin ait Manifest.xml dosyası
  3. Ekle tools:replace="android:allowBackup"yılında uygulama etiketinin ait Manifest.xml dosyası

Manifest.xml dosyası şöyle görünmelidir.

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

Bitti.


2
Sorununuz modüllerinizden biriydi / AAR'larda android: allowBackup = "true" .. Bu nedenle, özellik araçlarıyla yeniden ayarlamanız gerekiyor: değiştirin.
Maher Abuthraa

Tercihlerimi saklamama android:allowBackup="false"ve tools:replace="android:allowBackup"almaya devam etmeme rağmen , sorun nedir?
Shylendra Madda

Ben de aynı sorunu alıyorum. Bu kodu ekledikten sonra prefrence temizleyemiyor
Pawan Soni

5

Sorun tercihlerde değil.

düzeltmek için bu kodu kullanın ..........

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

Bu yardımcı oldu. Bu arada, allowbackup'ı neden false olarak ayarlamıyoruz?
Shakle

3

Ayar, allowBackup="false"bir uygulamayı hem yedeklemeden hem de geri yüklemeden çıkarır.

 android:allowBackup="false"

-1

Paylaşılan Tercihler artık lokumdan itibaren her zaman silinmiyor. Bu satırı bildiriminize ekleyin: "android: allowBackup =" false ""

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.