Yanıtlar:
Belirli değerleri kaldırmak için: SharedPreferences.Editor.remove () ve ardından acommit()
Bunları kaldırmak için tüm SharedPreferences.Editor.clear()
a, ardındancommit()
Dönüş değerini umursamıyorsanız ve bunu uygulamanızın ana iş parçacığından kullanıyorsanız, apply()
bunun yerine kullanmayı düşünün .
Çözümüm:
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
"text"
.
Tüm tercihleri kaldırma:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();
Tek tercihin kaldırılması:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();
KeyName
?
Her seferinde çıkarılması gerekli değilse, manuel olarak şu adresten kaldırabilirsiniz:
Ayarlar -> Uygulamalar -> Uygulamaları yönet -> (uygulamanızı seçin) -> Verileri temizle veya Kaldır
Android'in daha yeni sürümleri:
Ayarlar -> Uygulamalar -> (uygulamanızı seçin) -> Depolama Alanı -> Verileri temizle ve Önbelleği temizle
Android Paylaşımlı Tercihlerini bir satırda silme :-)
context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();
Veya apply
engellemeyen eşzamansız çalışma için:
this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
Tüm çözümlerin tamamen çalışmadığını veya ölmediğini görünüyor
Etkinlikteki tüm Paylaşılan Tercihleri temizleme
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().clear().apply();
OnCreate'den sonra bunu Ana Etkinlikten çağırın
not * .apply()
yerine kullandığım .commit()
, commit ();
Köklü bir telefon olmasa bile bunu yapmak için adb kabuğunu kullanabilirsiniz. Tek yakalama, uygulamanın hata ayıklanabilir olması gerektiğidir.
run-as <your package name> <command>
Örneğin:
run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db
Alternatif olarak, yukarıdakileri sadece uygulama paketi köküne yönlendirecek ve uygulamanın bağlamında daha fazla komut yürütmenize izin verecek komut olmadan yapabilirsiniz.
run-as
. Bunu 3 yıl sonra bulurdum ...
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
API 24 (Nougat) itibariyle şunları yapabilirsiniz:
context.deleteSharedPreferences("YOUR_PREFS");
Bununla birlikte, geriye dönük uyumluluk yoktur, bu nedenle 24'ten az bir şey destekliyorsanız, aşağıdakilere bağlı kalın:
context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply();
Hepsini temizle:
PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
Cihazınızı kullanarak uygulamanızı manuel olarak da kaldırabilirsiniz. Ardından uygulamanızı yeniden yüklediğinizde, paylaşılan tercihler sıfırlanmıştır.
Sınıf tanımlarında:
private static final String PREFERENCES = "shared_prefs";
private static final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
Sınıf içinde:
public static void deleteAllSharedPrefs(){
sharedPreferences.edit().clear().commit();
}
Bu kodu deneyin:
SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
SharedPreferences.Editor remove (String key) ve ardından bir commit () veya bir Apply ()
Tüm değerleri kaldırmak için,
SharedPreferences.Editor clear () ve ardından bir kesinleştirme () veya bir uygulama ()
Anahtar / değer çiftlerini tercihten kaldırmak için aşağıdakileri kolayca yapabilirsiniz
getActivity().getSharedPreference().editor().remove("key").apply();
Ayrıca, paylaşılan tercihlerin kolayca manipüle edilmesi için bir kütüphane geliştirdim. Aşağıdaki bağlantıyı bulabilirsiniz
Tüm SharedPreferences'ı herhangi bir sınıftan merkezi olarak temizlemek için:
public static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
Ve sonra herhangi bir sınıftan: (commit, Tercihlerinizin silinip temizlenmediğini kontrol edebileceğiniz bir Boole döndürür)
Navigation.getEditor(this).clear().commit();
Veya uygulamak kullanabilirsiniz; boş döndü
Navigation.getEditor(this).clear().apply();
new File(context.getFilesDir(), fileName).delete();
Paylaşılan tercihlerdeki dosyayı onunla silebilirim
Birçok paylaşılan tercihler anahtarım olduğu için cevapların hiçbiri benim için çalışmıyor.
Diyelim ki birim testi yerine bir Android Testi çalıştırıyorsunuz.
Benim için çalışıyor ve tüm paylaşılan_prefs dosyaları üzerinden silin .
@BeforeClass tüm testlerden ve ActivityTestRule'den önce çalışır
@BeforeClass
public static void setUp() {
Context context = InstrumentationRegistry.getTargetContext();
File root = context.getFilesDir().getParentFile();
String[] sharedPreferencesFileNames = new File(root, "shared_prefs").list();
for (String fileName : sharedPreferencesFileNames) {
context.getSharedPreferences(fileName.replace(".xml", ""), Context.MODE_PRIVATE).edit().clear().commit();
}
}
KOTLIN KTX yolu tüm temizlemek tercihleri:
val prefs: SharedPreferences = getSharedPreferences("prefsName", Context.MODE_PRIVATE)
prefs.edit(commit = true) {
clear()
}
Örneklerle tüm Paylaşılan tercihler işlemleri için buraya tıklayın
preferences.edit().remove("key").commit()
Kayıtlı değerleri paylaşılan tercihlerden silmek için kullanabilirsiniz .
Sadece bu sabah yaptım. Bir komut isteminden:
adb shell
cd /data/data/YOUR_PACKAGE_NAME/shared_prefs
rm * // to remove all shared preference files
rm YOUR_PREFS_NAME.xml // to remove a specific shared preference file
NOT : Bu, stok Android sanal cihazları, bir Genymotion cihazı veya gerçek bir köklü el cihazı / tablet vb. Gibi köklü bir cihaz gerektirir.
/data/data
Doğrudan erişmek için köklü bir telefona ihtiyacınız var !
su
sonra adb shell
ayrıcalıklı kabuğunu açmak için.