Jawaban:
Untuk menghapus nilai tertentu: SharedPreferences.Editor.remove () diikuti oleh acommit()
Untuk menghapusnya semua SharedPreferences.Editor.clear()
diikuti oleh acommit()
Jika Anda tidak peduli dengan nilai pengembalian dan Anda menggunakan ini dari utas utama aplikasi Anda, pertimbangkan untuk menggunakannya apply()
.
Solusi saya:
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
"text"
.
Menghapus semua preferensi:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();
Menghapus preferensi tunggal:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();
KeyName
?
Jika tidak perlu dihapus setiap kali, Anda dapat menghapusnya secara manual dari:
Pengaturan -> Aplikasi -> Kelola aplikasi -> (pilih aplikasi Anda) -> Bersihkan data atau Hapus instalasi
Versi Android yang lebih baru:
Pengaturan -> Aplikasi -> (pilih aplikasi Anda) -> Penyimpanan -> Hapus data dan Hapus cache
Menghapus Preferensi Bersama Android dalam satu baris :-)
context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();
Atau apply
untuk operasi asinkron yang tidak memblokir:
this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
Tampaknya semua solusi tidak sepenuhnya berfungsi atau mati
untuk menghapus semua SharedPreferences dalam suatu Kegiatan
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().clear().apply();
Sebut ini dari Kegiatan Utama setelah onCreate
note * i digunakan .apply()
alih-alih .commit()
, Anda bebas memilih commit ();
Anda dapat menggunakan adb shell untuk melakukan ini bahkan tanpa ponsel yang di-rooting. Satu-satunya tangkapan adalah aplikasi tersebut harus dapat debuggable.
run-as <your package name> <command>
Sebagai contoh:
run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db
Atau, Anda bisa melakukan hal di atas tetapi tanpa perintah yang akan mengarahkan Anda ke root paket aplikasi dan memungkinkan Anda untuk mengeksekusi lebih banyak perintah dalam konteks aplikasi.
run-as
. Anda akan berpikir saya akan menemukan ini setelah 3 tahun ...
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
Pada API 24 (Nougat) Anda bisa melakukan:
context.deleteSharedPreferences("YOUR_PREFS");
Namun, tidak ada kompatibilitas ke belakang, jadi jika Anda mendukung sesuatu yang kurang dari 24, tetap dengan:
context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply();
Bersihkan semuanya:
PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
Anda juga dapat menghapus aplikasi secara manual menggunakan perangkat Anda. Kemudian ketika Anda menginstal ulang aplikasi Anda, preferensi bersama telah diatur ulang.
Dalam definisi kelas:
private static final String PREFERENCES = "shared_prefs";
private static final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
Di dalam kelas:
public static void deleteAllSharedPrefs(){
sharedPreferences.edit().clear().commit();
}
Coba kode ini:
SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
SharedPreferences.Editor menghapus (String string) diikuti oleh commit () atau apply ()
Untuk menghapus semua nilai,
SharedPreferences.Editor menghapus () diikuti oleh commit () atau apply ()
Untuk menghapus pasangan nilai kunci dari preferensi, Anda dapat dengan mudah melakukan hal berikut
getActivity().getSharedPreference().editor().remove("key").apply();
Saya juga telah mengembangkan perpustakaan untuk memudahkan manipulasi preferensi bersama. Anda dapat menemukan tautan berikut
Untuk menghapus semua SharedPreferences secara terpusat dari kelas mana pun:
public static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
Dan dari kelas mana pun: (komit mengembalikan Boolean tempat Anda dapat memeriksa apakah Preferensi Anda dihapus atau tidak)
Navigation.getEditor(this).clear().commit();
Atau Anda bisa menggunakan berlaku; mengembalikan batal
Navigation.getEditor(this).clear().apply();
new File(context.getFilesDir(), fileName).delete();
Saya dapat menghapus file dalam preferensi bersama dengannya
Tidak ada jawaban yang berfungsi untuk saya karena saya memiliki banyak tombol preferensi bersama.
Katakanlah Anda menjalankan Tes Android daripada tes unit.
Ini berfungsi untuk saya loop dan menghapus semua file shared_prefs .
@BeforeClass akan berjalan sebelum semua tes dan ActivityTestRule
@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();
}
}
Cara Kotlin ktx untuk menghapus semua preferensi:
val prefs: SharedPreferences = getSharedPreferences("prefsName", Context.MODE_PRIVATE)
prefs.edit(commit = true) {
clear()
}
Klik di sini untuk semua operasi preferensi Bersama dengan contoh
Anda dapat menggunakan preferences.edit().remove("key").commit()
untuk menghapus nilai yang disimpan dari preferensi bersama.
Lakukan saja pagi ini. Dari prompt perintah:
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
CATATAN : Ini membutuhkan perangkat yang di-rooting seperti stok perangkat virtual Android, perangkat Genymotion, atau handset / tablet yang sudah di-root, dll.
/data/data
secara langsung!
su
setelah adb shell
membuka shell istimewa.