Saat mengembangkan aplikasi Android yang menargetkan semua versi di atas 4.1, saya mengamati bahwa mencopot aplikasi saya dan menginstalnya lagi tidak menghapus datanya.
Aplikasi ini dirancang untuk menyimpan detail yang diminta di layar pertamanya. Setelah menghapus dan menginstal lagi di OS versi 4.4.4, aplikasi meminta pengguna untuk mengisi data, yang normal. Namun dalam versi 6.0 urutan instal / hapus instalan yang sama mengembalikan data input aslinya.
Saya mencoba memastikan dengan mengunjungi /data/data/my package folder
untuk melihat basis data yang hilang setelah menghapus instalan dan memang folder itu dihapus saat menghapus instalan.
Saya mencoba menghapus aplikasi dengan mengunjungi halaman pengaturan, melalui Titanium Backup dan hasilnya sama. Perangkat ini berakar Nexus 5 menjalankan v6.0.
Apa yang bisa menjadi alasan perilaku aneh ini?
sumber
Jawaban greywolf82 benar tetapi saya ingin menambahkan beberapa info untuk ini.
Ketika mengembangkan aplikasi Android saya (menggunakan Xamarin), saya perhatikan bahwa setiap kali saya meluncurkan kembali aplikasi dari Visual Studio, data saya akan kembali ke data dari beberapa bulan yang lalu. Tidak masalah jika saya berhenti dan menjalankannya kembali dari VS, atau jika saya benar-benar menghapus aplikasi dan menginstalnya kembali.
Perlu juga dicatat bahwa kami tidak pernah secara eksplisit memberi tahu aplikasi untuk menyimpan cadangan.
Cadangan juga tampaknya menimpa data yang lebih baru saat meluncurkan dari Visual Studio, dan kami memiliki laporan pengguna yang menggunakan rilis rilis aplikasi kami dan juga mendapatkan data yang lebih baru ditimpa oleh cadangan.
Karena saya tidak tahu persis kapan pencadangan dan pemulihan terjadi, fitur ini tampaknya hanya menimbulkan masalah.
Kami telah memodifikasi AndroidManifest kami seperti yang ditunjukkan pada xml berikut:
Setelah kami secara eksplisit mengatur nilai ke false, semua tampak berfungsi. Saya berharap ini menjadi fitur opt-in tapi ... sepertinya mungkin diaktifkan secara default untuk aplikasi yang tidak menentukan nilainya.
sumber
Anda harus memeriksa pengaturan Cadangan dan Reset perangkat Anda, dan mematikan Pemulihan otomatis (saat menginstal ulang aplikasi, pengaturan yang dicadangkan, dan data akan dipulihkan.)
Mematikan cadangan otomatis berbeda dari pemulihan otomatis. Jika menurut Anda akan sangat membantu untuk mengaktifkan pencadangan otomatis untuk aplikasi Anda. Tetapi jika Anda berpikir ini akan membuat pengguna akhir yang tidak menyadari bahwa fitur pengembalian otomatis perangkat mereka dihidupkan, jangan ragu untuk mematikannya.
Dalam kasus saya, saya mematikan fitur allowBackup, tetapi karena saya sudah memiliki cadangan dari versi sebelumnya di Cloud, itu masih terus memulihkan.
Lihat gambar sebagai referensi untuk perangkat Samsung di Android 6.0. Perangkat dan versi lain mungkin memiliki layar yang berbeda. Lihat gambar di bawah.
Automatic Restore Setting di bawah Backup and Reset
sumber
Saya baru-baru ini perlu mengambil keuntungan dari fitur-fitur ini, saya dapat mengungkap dokumentasi dan setelah pengujian ekstensif inilah yang dapat saya simpulkan:
Android: allowbackup - akan mencadangkan data aplikasi lokal di perangkat tempatnya berada.
Android: fullBackupContent - digunakan bersama dengan api pemulihan cadangan Google dan BISA dikontrol melalui file xml untuk menentukan apa tepatnya yang akan dicadangkan, serta kelas BackupManager yang dapat Anda terapkan untuk kontrol lebih lanjut atas proses.
Namun dokumentasi menyatakan, dan saya telah mengkonfirmasi dengan pengujian, bahwa pemulihan hanya akan terjadi baik ketika perangkat dipulihkan dan proses data aplikasi pemulihan dipicu. ATAU itu juga akan mengembalikan ketika aplikasi di-sideload melalui adb, yang kami lakukan ketika kami menjalankan aplikasi untuk pengujian atau debug pada perangkat kami melalui Android Studio. Perhatikan bahwa jika Anda mengatur android: allowbackup tetapi tidak mengkonfigurasi android: fullBackupContent dengan kode Google api maka data aplikasi hanya akan disimpan secara lokal, sedangkan jika Anda mengonfigurasinya dengan benar maka jika aplikasi Anda dicadangkan dan Anda mendapatkan perangkat baru aplikasi tersebut data disimpan di cloud sehingga dapat dipulihkan pada perangkat baru.
sumber
Menambahkan android: allowBackup = "false" di bawah tag aplikasi dalam file Manifest menyelesaikan masalah saya.
Ini dia dokumentasi android untuk Cadangkan data pengguna dengan Auto Backup
sumber
Cukup ganti android: allowBackup = "true" ke android: allowBackup = "false" di manifiest.xml. Itu akan berhasil.
sumber
Hanya menambahkan ini, kami menemukan bahwa di Android 9 (pada perangkat HMD Nokia) bahwa aset dimiliki, bahkan setelah menghapus aplikasi melalui antarmuka dan melalui adb.
Jawaban menambahkan:
android:allowBackup="false" android:fullBackupOnly="false"
Jelas, ini bukan jawaban baru - tetapi sebuah pengamatan untuk orang-orang yang berada di posisi yang sama dengan kita.
sumber
Jika Anda menargetkan Android 10 maka Anda harus memasukkan
android:hasFragileUserData="true"
tag aplikasiAndroidManifest.xml
Lihat https://commonsware.com/blog/2019/06/06/random-musings-q-beta-4.html
sumber