2012-05-28 12 views
46

मेरे कोड है:एंड्रॉयड getDefaultSharedPreferences

final String eulaKey = "mykey"; 
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
boolean hasBeenShown = prefs.getBoolean(eulaKey, false); 

हमेशा ओएस संस्करण के आधार पर अलग-अलग मान देता है। 2.2, 2.3.4, 3.2, 4.0.3 में परीक्षण - सही मूल्य देता है। लेकिन डिवाइस Zte ब्लेड के साथ 2.3.7 के साथ CianogenMod 7.1 के साथ - परिणाम हमेशा झूठा है। मुझे लगता है कि GetBoolean के लिए डिफ़ॉल्ट मान।

final String eulaKey = "mykey"; 
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putBoolean(eulaKey, true); 
editor.commit(); 

किसी को भी किसी भी विचार है:

यहाँ कोड लेखन बूलियन है?

अद्यतन: कोड के पिछले संस्करण के साथ अपने वर्तमान कोड की तुलना करना - कोड में कोई अंतर नहीं है। केवल अंतर प्रकट होता है: कोड काम करता है minVersion = 8 और targetVersion = 8 के साथ ठीक है अब मैं minmion = 8 और लक्ष्य = 13/Admob/के कारण संकलित कर रहा हूं। शायद कुछ एपीआई बदल गए, लेकिन मुझे इस पर कुछ भी नहीं मिला।

समाधान: - शॉर्टकट से और मेनू से स्टार्टिंग ऐप मुझे अलग-अलग डिफ़ॉल्ट शेरफेर देता है। मेरे कोड से DefaultSharedPreferences को हटाने के बाद - यह सही काम करता है। मैं सिर्फ इतना नहीं कह सकता: लोग शॉर्टकट नहीं बनाते हैं, इसलिए मुझे कोड बदलना पड़ा। जिस स्थिति में

final String eulaKey = "mykey"; 
Context mContext = getApplicationContext(); 
mPrefs = mContext.getSharedPreferences("myAppPrefs", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = mPrefs.edit(); 
editor.putBoolean(eulaKey, true); 
editor.commit(); 

आप अपनी प्राथमिकताओं का नाम (myAppPrefs) फ़ाइल और इसे करने के लिए उपयोग persmission नियंत्रित कर सकते हैं निर्दिष्ट कर सकते हैं:

+1

यह की के लिए कुछ उपकरणों को बेतरतीब ढंग से SharedPreferences डेटा खोने के लिए अनसुना नहीं है। उदाहरण के लिए http://code.google.com/p/android/issues/detail?id=14359 देखें। –

+0

क्या यह जानकारी केवल getDefaultSharedPreferences से संबंधित है? क्या आप getSharedPreferences ("myAppPrefs", Context.MODE_PRIVATE) के बारे में समान समस्याएं जानते हैं; ? – Kostadin

+0

डिफ़ॉल्ट से getSharedPreferences के साथ प्रयास करें। यह getPreferenceScreen() में – png

उत्तर

50

इसे इस तरह की कोशिश करो। अन्य ऑपरेटिंग मोड में शामिल हैं:

  • MODE_WORLD_READABLE
  • MODE_WORLD_WRITEABLE
  • MODE_MULTI_PROCESS
+3

शॉर्टकट से और मेनू से ऐप शुरू करने से मुझे अलग डिफॉल्टश्रेड संदर्भ मिलते हैं। मेरे कोड से DefaultSharedPreferences को हटाने के बाद - यह सही काम करता है। मैं सिर्फ इतना नहीं कह सकता: लोग नशे की लत नहीं बनाते हैं, इसलिए मुझे कोड बदलना पड़ा। – Kostadin