cara menghapus preferensi bersama saat aplikasi di-uninstall di android

103

Saya memiliki aplikasi android untuk menyimpan detail login seperti nama pengguna dan kata sandi melalui itu SharedPreferencesberfungsi dengan baik, tetapi saya perlu menghapus semua yang saya gunakan SharedPreferencessaat aplikasi saya mencopot pemasangan. Bagaimana cara melakukannya?

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

Saya ingin menghapus ini SharedPreferencessaat aplikasi saya dihapus.

shivcena
sumber
11
Ini akan dihapus secara otomatis oleh OS Android pada saat uninstall aplikasi ...
umair.ali
terima kasih atas detail yang
berharga
Tidak pada Samsung Galaxy 1 (Froyo) saya yang telah di-root. Masih tetap masuk /dbdata/database/my.package/shared_prefs. Tidak tahu apakah ini karena itu di-root atau karena Froyo. Belum dapat menguji dengan perangkat yang lebih baru
Nilzor

Jawaban:

20

SharedPreferences selalu dihapus bersama dengan pencopotan aplikasi.

Saat Anda menghapus aplikasi apa pun, semua perubahan yang dibuat aplikasi di memori internal Anda dicabut, yang berarti file SharedPreference, file data lain, file Database, Aplikasi dihapus secara otomatis oleh OS Android.

DIEDIT: 29/04/15: untuk> = 21 API lihat jawaban @Maher Abuthraa

Dhaval Parmar
sumber
10
Tidak demikian halnya pada Nexus 6P, yang mencari tahu sekarang.
AndyRoid
1
Ya, saya juga mengamati di Nexus 5 yang berjalan dengan Android 6 tidak menghapus preferensi bersama. Saya harus memulai ulang perangkat setelah mencopot pemasangan dan preferensi bersama hilang sekarang
Santhana
2
Galaxy s7 di sini dengan masalah yang sama. Saya Uninstall dan setelah menginstal sharedpreferences masih disetel. Sangat menjengkelkan karena saya tidak dapat menguji penginstalan baru dengan hanya mencopotnya.
Dpedrinha
2
@ Maher Abuthraa punya jawaban benar jawaban ini salah.
Юрій Мазуревич
1
Perangkat Samsung s8 s8 + juga tidak menghapus preferensi bersama, saya baru-baru ini menguji. Benar-benar kecewa dengan Samsung
Vrajesh
299

Masalahnya bukan pada preferensi. Ini secara drastis manajer cadangan ! .. sejak android-23 secara default mencadangkan sebagai tugas menyimpan data aplikasi termasuk preferensi ke cloud. Nanti ketika Anda menghapus instalasi kemudian menginstal versi yang lebih baru, Anda mungkin akan menggunakan preferensi yang dipulihkan. Untuk menghindarinya, cukup tambahkan ini ke manifes Anda (atau setidaknya ke manifes debug):

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

Baca ini: http://developer.android.com/guide/topics/data/backup.html

Anda juga akan melihat itu jika Anda menjalankan Lint di bawah Android > Lint > Security:

peringatan lint di backup

Baik untuk disebutkan di sini bahwa proses pencadangan seperti kotak hitam .. Anda tidak tahu kapan itu dimulai, dan periode antara pemeriksaan ... jadi lebih baik untuk mengembangkan untuk menonaktifkannya.

==== Pembaruan ====

Anda mungkin mendapatkan masalah penggabungan Manifes setelah menyetel allowbackupke false. Untuk memperbaiki masalah itu tambahkan:

tools:replace="android:allowBackup"

dalam elemen aplikasi. Penghargaan untuk @ shahzain-ali

Atau Anda dapat menghapus cache sebelum menghapus aplikasi.

Saya harap itu bisa membantu.

Maher Abuthraa
sumber
4
Hai, saya perhatikan bahwa di beberapa perangkat, preferensi bersama dipertahankan setelah unistall perangkat di-restart. Apakah itu ada hubungannya dengan ini? Jika demikian, apakah aman untuk menyetel tanda ini ke false di aplikasi produksi? Apakah itu akan mempengaruhi pengguna?
Eliahu Horwitz
Tidak disarankan untuk menetapkan false pada produksi .. pengguna akan kehilangan semua preferensi selama pembaruan .. Lebih baik pada produksi untuk memigrasi data jika perlu .. dalam kode debug dan preferensi dapat berubah berkali-kali di mana lebih baik untuk mematikan cadangan
Maher Abuthraa
1
Kudos @MaherAbuthraa .. Saya menghadapi masalah ini tentang data preferensi bersama tertentu yang dipertahankan setelah aplikasi dihapus dan diinstal ulang. Tidak pernah tahu bahwa hal seperti itu sedang dilakukan.
SoulRayder
1
Terima kasih banyak! Anda menyelamatkan hidup saya.
hungtdo
Bagaimana saya bisa memastikan preferensi dipertahankan selama pembaruan tetapi dihapus saat pencopotan manual? Tentunya ini akan menjadi perilaku yang diharapkan.
Gannet
10

Aneh tetapi saya menemukan solusinya dengan cara berikut:

  1. Tambahkan xmlns:tools="http://schemas.android.com/tools"di tag manifest dari manifest.xml berkas
  2. Tambahkan android:allowBackup="false"di tag aplikasi dari manifest.xml berkas
  3. Tambahkan tools:replace="android:allowBackup"di tag aplikasi dari manifest.xml berkas

File Manifest.xml akan terlihat seperti ini.

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

Selesai.

Hiren Patel
sumber
2
Masalah Anda adalah salah satu modul / AAR Anda memiliki android: allowBackup = "true" .. Itulah mengapa Anda perlu menyiapkannya lagi dengan alat atribut: ganti.
Maher Abuthraa
Meskipun saya menyimpan android:allowBackup="false"dan tools:replace="android:allowBackup"masih mendapatkan preferensi saya, Ada ide apa masalahnya?
Shylendra Madda
Saya juga mendapatkan masalah yang sama. Setelah menambahkan kode ini tidak dapat menghapus prefrence
Pawan Soni
5

Masalahnya bukan pada preferensi.

gunakan kode ini untuk memperbaikinya ..........

<application
    android:allowBackup="true"
    android:fullBackupContent="false"></application>
Mohammad Faizan
sumber
Itu membantu. Ngomong-ngomong, mengapa kita tidak menyetel allowbackup menjadi false?
Kocok
3

Pengaturan allowBackup="false"memilih aplikasi keluar dari pencadangan dan pemulihan.

 android:allowBackup="false"
Permen Mahendran
sumber
-1

Preferensi Bersama tidak selalu dihapus lagi sejak marshmallow. Tambahkan baris ini di manifes Anda: "android: allowBackup =" false ""

Binyamin Robbins
sumber