एंड्रॉइड में एप्लिकेशन अनइंस्टॉल करते समय साझा प्राथमिकता को कैसे हटाएं


103

मेरे पास लॉगिन विवरणों को सहेजने के लिए एक एंड्रॉइड एप्लिकेशन है जैसे कि उपयोगकर्ता नाम और पासवर्ड SharedPreferences, जो ठीक काम करता है, लेकिन मुझे SharedPreferencesअपने एप्लिकेशन को अनइंस्टॉल करते समय अपने सभी उपयोग को हटाने की आवश्यकता है । यह कैसे करना है?

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

SharedPreferencesजब मेरा एप्लिकेशन अनइंस्टॉल हो जाता है तो मैं इसे हटाना चाहता हूं।


11
यह एंड्रॉइड ओएस द्वारा एप्लिकेशन अनइंस्टॉल पर स्वचालित रूप से हटा दिया जाएगा ...
umair.ali

इस योग्य विवरण के लिए धन्यवाद
shivcena

मेरे निहित सैमसंग गैलेक्सी 1 (फ्रायो) पर नहीं। फिर भी अंदर रहा /dbdata/database/my.package/shared_prefs। पता नहीं कि यह बीक्युस है या नहीं, क्योंकि यह फ्रायो है। नए उपकरणों के साथ परीक्षण करने में सक्षम नहीं है
Nilzor

जवाबों:


19

SharedPreferences हमेशा एप्लिकेशन अनइंस्टॉल के साथ हटा दिया जाता है।

जब आप किसी भी एप्लिकेशन को अनइंस्टॉल करते हैं, तो आपकी आंतरिक मेमोरी में किए गए सभी परिवर्तनों को रद्द कर दिया जाता है, तो इसका मतलब है कि आपकी SharedPreference फाइलें, अन्य डेटा फ़ाइलें, डेटाबेस फ़ाइल, एप्लिकेशन Android ओएस द्वारा स्वचालित रूप से हटा दिया जाता है।

EDITED: 29/04/15:> = 21 API के लिए देखें @Maher Abuthraa का जवाब


10
नेक्सस 6 पी पर मामला नहीं है, यह अभी पता लगाना।
एंडरॉइड

1
हां, मैंने नेक्सस 5 में भी देखा गया है कि एंड्रॉइड 6 के साथ चल रहा है, साझाकरण को हटा नहीं रहा है। मैं स्थापना हटाने के बाद डिवाइस को पुनरारंभ करने के लिए किया था और SharedPreferences अब चला गया है
Santhana

2
इसी समस्या से यहां गैलेक्सी एस 7। मैं अनइंस्टॉल कर देता हूं और इंस्टाल करने के बाद शेयर्डफायरिंग अभी भी सेट है। वास्तव में कष्टप्रद क्योंकि मैं सिर्फ इसे अनइंस्टॉल करके नए इंस्टाल का परीक्षण नहीं कर सकता।
डोप्ड्रिहा

2
@ मेहर अबूथरा के पास इसका सही जवाब है, यह जवाब गलत है।
чрій Мазуревич

1
सैमसंग s8 s8 + डिवाइस साझा प्राथमिकता को नहीं हटाता है, मैं हाल ही में परीक्षण करता हूं। सैमसंग के साथ वास्तव में निराश
व्रजेश

298

समस्या वरीयताओं के साथ नहीं है। यह बहुत बैकअप प्रबंधक है ! .. चूंकि एंड्रॉइड -23 डिफ़ॉल्ट बैकअप द्वारा एक कार्य के रूप में ऐप के डेटा को प्राथमिकता देता है जिसमें क्लाउड को प्राथमिकता दी जाती है। बाद में जब आप अनइंस्टॉल करते हैं तो नए संस्करण को स्थापित करते हैं जिसे आप शायद बहाल वरीयताओं का उपयोग करने जा रहे हैं। उससे बचने के लिए, बस इसे अपने मेनिफ़ेस्ट में जोड़ें (या कम से कम डिबग मेनिफ़ेस्ट के लिए):

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

इसे पढ़ें: http://developer.android.com/guide/topics/data/backup.html

आप यह भी देखेंगे कि यदि आप नीचे लिंट चलाते हैं Android > Lint > Security:

बैकअप पर चेतावनी

यहां यह उल्लेख करना अच्छा है कि बैकअप की प्रक्रिया एक ब्लैकबॉक्स की तरह है .. आपको पता नहीं है कि यह कब शुरू होता है, और चेक के बीच की अवधि ... इसे अक्षम करने के लिए विकसित करने के लिए बेहतर है।

==== अपडेट ====

करने के allowbackupलिए सेटिंग के बाद आप मैनिफ़ेस्ट मर्जर समस्याएँ प्राप्त कर सकते हैं false। उस समस्या को ठीक करने के लिए जोड़ें:

tools:replace="android:allowBackup"

अनुप्रयोग तत्व में। इसका श्रेय @ शाहज़ैन-अली को जाता है

वैकल्पिक रूप से आप ऐप को अनइंस्टॉल करने से पहले कैश को साफ कर सकते हैं।

मुझे उम्मीद है कि मदद मिल सकती है।


4
अरे, मैंने देखा है कि कुछ उपकरणों में डिवाइस को पुनः आरंभ करने के बाद साझा प्राथमिकताओं को बनाए रखा जाता है। क्या वह इससे जुड़ा है? यदि ऐसा है तो क्या इस झंडे को उत्पादन ऐप्स पर झूठा स्थापित करना सुरक्षित है? क्या यह उपयोगकर्ता को प्रभावित करेगा?
एलियाहू होर्विट्ज़

इसके उत्पादन पर गलत सेट करने की अनुशंसा नहीं की गई है .. उपयोगकर्ता अपडेट के दौरान सभी वरीयताओं को खो देगा .. यदि आवश्यक हो तो डेटा को माइग्रेट करने के लिए उत्पादन पर बेहतर है .. डिबग कोड में और वरीयताएँ कई बार बदल सकती हैं जहां बैकअप बंद करने के लिए बेहतर है
मैहर अबुथ्रा

1
Kudos @MaherAbuthraa .. मैं कुछ साझा प्राथमिकता वाले डेटा के इस मुद्दे का सामना कर रहा था जो ऐप अनइंस्टॉल और पुनर्स्थापना के बाद बनाए रखा जा रहा था। कभी नहीं पता था कि ऐसा काम किया जा रहा है।
सोलडराइडर

1
बहुत बहुत धन्यवाद! तुमने मेरी जान बचाई।
Hungtdo

मैं कैसे सुनिश्चित कर सकता हूं कि अपडेट के दौरान वरीयताएँ संरक्षित हैं लेकिन मैन्युअल अनइंस्टॉल पर हटा दी गई हैं? निश्चित रूप से यह अपेक्षित व्यवहार होगा।
गन्नात

10

इसका अजीब लेकिन मुझे निम्नलिखित तरीके से समाधान मिला:

  1. जोड़े xmlns:tools="http://schemas.android.com/tools"में प्रकट टैग की Manifest.xml फ़ाइल
  2. जोड़े android:allowBackup="false"में आवेदन टैग की Manifest.xml फ़ाइल
  3. जोड़े tools:replace="android:allowBackup"में आवेदन टैग की Manifest.xml फ़ाइल

Manifest.xml फ़ाइल को इस तरह दिखना चाहिए।

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

हॊ गया।


2
आपका मुद्दा आपके मॉड्यूल में से एक था / एएआरएस में एंड्रॉइड है: allowBackup = "true" .. यही कारण है कि आपको इसे फिर से सेट करने की आवश्यकता है विशेषता टूल: प्रतिस्थापित करें।
मैहर अबुथ्रा

हालांकि मैंने रखा android:allowBackup="false"और tools:replace="android:allowBackup"अभी भी मेरी प्राथमिकताएं मिल रही हैं, कोई भी विचार क्या मुद्दा है?
शीलेंद्र मद्दा १६'१da

मुझे भी यही मुद्दा मिल रहा है। इस कोड को जोड़ने के बाद पूर्वधारणा को स्पष्ट नहीं कर सके
पवन सोनी

5

समस्या वरीयताओं के साथ नहीं है।

इसे ठीक करने के लिए इस कोड का उपयोग करें ..........

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

इससे मदद मिली। वैसे हम झूठे को अनुमति क्यों नहीं देते?
शाकेले

3

allowBackup="false"बैकअप और पुनर्स्थापना दोनों में से किसी एक एप्लिकेशन का चयन करना ।

 android:allowBackup="false"

-1

साझा प्राथमिकताएं हमेशा मार्शमैलो के रूप में डिलीट नहीं होती हैं। इस लाइन को अपने घोषणापत्र में जोड़ें: "android: allowBackup =" false ""

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.