जवाबों:
विशिष्ट मानों को निकालने के लिए: SharedPreferences.Editor.remove () इसके बाद acommit()
उन सभी को हटाने के लिए SharedPreferences.Editor.clear()
एक द्वारा पीछा कियाcommit()
यदि आपको रिटर्न वैल्यू की परवाह नहीं है और आप अपने एप्लिकेशन के मुख्य थ्रेड से इसका उपयोग कर रहे हैं, तो apply()
इसके बजाय का उपयोग करने पर विचार करें ।
मेरा समाधान:
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
"text"
।
सभी प्राथमिकताओं को हटाना:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();
एकल वरीयता निकालना:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();
KeyName
?
यदि हर बार हटाया जाना आवश्यक नहीं है, तो आप इसे मैन्युअल रूप से हटा सकते हैं:
सेटिंग्स -> एप्लिकेशन -> एप्लिकेशन प्रबंधित करें -> (अपना ऐप चुनें) -> डेटा साफ़ करें या अनइंस्टॉल करें
Android के नए संस्करण:
सेटिंग्स -> एप्लिकेशन -> (अपना ऐप चुनें) -> स्टोरेज -> डेटा साफ़ करें और कैश साफ़ करें
एक पंक्ति में Android साझा प्राथमिकताएँ हटाना :-)
context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();
या apply
गैर-अवरुद्ध अतुल्यकालिक ऑपरेशन के लिए:
this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
लगता है कि सभी समाधान पूरी तरह से काम या बाहर नहीं हैं
किसी गतिविधि में सभी साझाकरण को साफ़ करने के लिए
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().clear().apply();
OnCreate के बाद मुख्य गतिविधि से इसे कॉल करें
नोट * मैं .apply()
इसके बजाय इस्तेमाल किया .commit()
, आप प्रतिबद्ध () का चयन करने के लिए स्वतंत्र हैं;
आप बिना रूट किए हुए फ़ोन के लिए भी ऐसा करने के लिए adb शेल का उपयोग कर सकते हैं। एकमात्र पकड़ यह है कि ऐप को डीबग करना होगा।
run-as <your package name> <command>
उदाहरण के लिए:
run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db
वैकल्पिक रूप से, आप बस उपरोक्त कर सकते हैं, लेकिन बिना कमांड जो आपको ऐप पैकेज रूट पर निर्देशित करेगा और आपको ऐप के संदर्भ में अधिक कमांड निष्पादित करने की अनुमति देगा।
run-as
। आपको लगता है कि मुझे यह 3 साल बाद मिला होगा ...
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
एपीआई 24 (नौगाट) के अनुसार आप बस कर सकते हैं:
context.deleteSharedPreferences("YOUR_PREFS");
हालांकि, कोई पिछड़ी संगतता नहीं है, इसलिए यदि आप 24 से कम किसी चीज का समर्थन कर रहे हैं, तो इसके साथ रहें:
context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply();
उन सभी को साफ़ करें:
PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
आप अपने डिवाइस का उपयोग करके अपने ऐप को मैन्युअल रूप से अनइंस्टॉल भी कर सकते हैं। फिर जब आप अपने ऐप को फिर से इंस्टॉल करते हैं, तो साझा प्राथमिकताएं रीसेट हो जाती हैं।
कक्षा परिभाषाओं में:
private static final String PREFERENCES = "shared_prefs";
private static final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
वर्ग के अंदर:
public static void deleteAllSharedPrefs(){
sharedPreferences.edit().clear().commit();
}
इस कोड को आज़माएं:
SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
String prefTag = "someTag";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext);
prefs.edit().remove(prefTag).commit();
यह "someTag" नाम के साथ साझा की गई प्राथमिकताओं को हटा देगा।
मुख्य मूल्य जोड़े को वरीयता से हटाने के लिए, आप आसानी से निम्नलिखित कर सकते हैं
getActivity().getSharedPreference().editor().remove("key").apply();
साझा प्राथमिकताओं के आसान हेरफेर के लिए मैंने पुस्तकालय भी विकसित किया है। आपको निम्न लिंक मिल सकता है
किसी भी वर्ग से केंद्रशासित सभी साझाकरणों को साफ करने के लिए:
public static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
और फिर किसी भी वर्ग से: (एक बूलियन लौटाता है जहां आप जांच सकते हैं कि आपकी वरीयताएँ साफ़ हुई हैं या नहीं)
Navigation.getEditor(this).clear().commit();
या आप आवेदन का उपयोग कर सकते हैं; यह शून्य है
Navigation.getEditor(this).clear().apply();
जवाब में से कोई भी मेरे लिए काम नहीं करता है क्योंकि मेरे पास कई साझा प्राथमिकताएं हैं।
मान लीजिए कि आप एक इकाई परीक्षण के बजाय एक Android परीक्षण चला रहे हैं।
यह मेरे लिए काम कर रहा है और सभी साझा की गई फ़ाइलों के माध्यम से हटाएं ।
@BeforeClass सभी परीक्षणों और 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();
}
}
Kotlin KTX के लिए रास्ता साफ़ प्राथमिकताएं:
val prefs: SharedPreferences = getSharedPreferences("prefsName", Context.MODE_PRIVATE)
prefs.edit(commit = true) {
clear()
}
उदाहरणों के साथ सभी साझा प्राथमिकताओं के संचालन के लिए यहां क्लिक करें
आप preferences.edit().remove("key").commit()
साझा प्राथमिकताओं से सहेजे गए मूल्यों को हटाने के लिए उपयोग कर सकते हैं।
आज सुबह ही किया था। कमांड प्रॉम्प्ट से:
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
नोट : इसके लिए एक रूट किए गए डिवाइस की आवश्यकता होती है जैसे स्टॉक एंड्रॉइड वर्चुअल डिवाइस, एक जेनमोशन डिवाइस, या एक वास्तविक रूटेड हैंडसेट / टैबलेट, आदि।
/data/data
सीधे एक्सेस करने के लिए एक रूट किए गए फोन की आवश्यकता है !
su
के बाद adb shell
एक विशेषाधिकार प्राप्त खोल को खोलने के लिए।