Android menggunakan sistem file yang serupa dengan sistem file berbasis disk pada platform lain. Sistem ini menyediakan beberapa opsi bagi Anda untuk menyimpan data aplikasi:
- Penyimpanan khusus aplikasi: Menyimpan file yang hanya ditujukan untuk penggunaan aplikasi Anda, baik di direktori khusus dalam volume penyimpanan internal maupun direktori khusus lain dalam penyimpanan eksternal. Menggunakan direktori dalam penyimpanan internal untuk menyimpan informasi sensitif yang tidak boleh diakses aplikasi lain.
- Penyimpanan bersama: Menyimpan file yang ingin dibagikan aplikasi Anda dengan aplikasi lain, termasuk media, dokumen, dan file lainnya.
- Preferensi: Menyimpan data primitif pribadi dalam key-value pair.
- Database: Menyimpan data terstruktur dalam database pribadi menggunakan library persistensi Room.
Karakteristik opsi ini dirangkum dalam tabel berikut:
Jenis konten | Metode akses | Perlu izin | Dapatkah aplikasi lain mengaksesnya? | File dihapus saat aplikasi di-uninstal? | |
---|---|---|---|---|---|
File khusus aplikasi | File hanya ditujukan untuk penggunaan aplikasi Anda | Dari penyimpanan internal, getFilesDir() atau
getCacheDir() Dari penyimpanan eksternal, getExternalFilesDir() atau
getExternalCacheDir() |
Tidak pernah diperlukan untuk penyimpanan internal Tidak diperlukan untuk penyimpanan eksternal saat aplikasi Anda digunakan di perangkat yang menjalankan Android 4.4 (Level API 19) atau yang lebih tinggi |
Tidak | Ya |
Media | File media yang dapat dibagikan (gambar, file audio, video) | MediaStore API |
READ_EXTERNAL_STORAGE saat mengakses file aplikasi lain di
Android 11 (Level API 30) atau yang lebih tinggiREAD_EXTERNAL_STORAGE atau WRITE_EXTERNAL_STORAGE
saat mengakses aplikasi lain di Android 10 (Level API 29)Izin diperlukan untuk semua file di Android 9 (Level API 28) atau yang lebih rendah |
Ya, meskipun aplikasi lain memerlukan izin
READ_EXTERNAL_STORAGE |
Tidak |
Dokumen dan file lainnya | Jenis konten yang dapat dibagikan lainnya, termasuk file yang didownload | Storage Access Framework | Tidak ada | Ya, melalui alat pilih file sistem | Tidak |
Preferensi Aplikasi | Key-value pair | Library Preferensi Jetpack | Tidak ada | Tidak | Ya |
Database | Data terstruktur | Library persistensi Room | Tidak ada | Tidak | Ya |
Solusi yang Anda pilih bergantung pada kebutuhan spesifik Anda:
- Berapa banyak ruang yang diperlukan data Anda?
- Penyimpanan internal memiliki ruang terbatas untuk data khusus aplikasi. Gunakan jenis penyimpanan lain jika Anda perlu menyimpan sejumlah besar data.
- Seberapa andal akses data yang diperlukan?
- Jika fungsionalitas dasar aplikasi Anda memerlukan data tertentu, seperti saat aplikasi dimulai, tempatkan data dalam direktori penyimpanan internal atau database. File khusus aplikasi yang disimpan dalam penyimpanan eksternal tidak selalu dapat diakses karena beberapa perangkat memungkinkan pengguna menghapus perangkat fisik yang sesuai dengan penyimpanan eksternal.
- Jenis data apa yang perlu Anda simpan?
- Jika Anda memiliki data yang hanya bermanfaat bagi aplikasi Anda, gunakan penyimpanan khusus aplikasi. Untuk konten media yang dapat dibagikan, gunakan penyimpanan bersama sehingga aplikasi lain dapat mengakses konten tersebut. Untuk data terstruktur, gunakan preferensi (untuk data nilai kunci) atau database (untuk data yang berisi lebih dari 2 kolom).
- Haruskah data bersifat pribadi untuk aplikasi Anda?
- Saat menyimpan data sensitif, yaitu data yang tidak boleh diakses dari aplikasi lain, gunakan penyimpanan internal, preferensi, atau database. Penyimpanan internal memiliki manfaat tambahan yaitu data disembunyikan dari pengguna.
Kategori lokasi penyimpanan
Android menyediakan dua jenis lokasi penyimpanan fisik: penyimpanan internal dan penyimpanan eksternal. Pada sebagian besar perangkat, penyimpanan internal lebih kecil daripada penyimpanan eksternal. Namun, penyimpanan internal selalu tersedia di semua perangkat, menjadikannya sebagai tempat yang lebih andal untuk menyimpan data yang menjadi tempat aplikasi Anda bergantung.
Volume yang dapat dilepas, seperti kartu SD, muncul di sistem file sebagai bagian dari
penyimpanan eksternal. Android mewakili perangkat ini menggunakan jalur, seperti
/sdcard
.
Aplikasi itu sendiri disimpan dalam penyimpanan internal secara default. Namun, jika ukuran APK Anda sangat besar, Anda dapat menunjukkan preferensi dalam file manifes aplikasi untuk menginstal aplikasi di penyimpanan eksternal:
<manifest ... android:installLocation="preferExternal"> ... </manifest>
Izin dan akses ke penyimpanan eksternal
Android menentukan izin terkait penyimpanan berikut:
READ_EXTERNAL_STORAGE
,
WRITE_EXTERNAL_STORAGE
,
dan
MANAGE_EXTERNAL_STORAGE
.
Pada versi Android sebelumnya, aplikasi perlu mendeklarasikan
izin READ_EXTERNAL_STORAGE
untuk mengakses file apa pun di luar direktori
khusus aplikasi pada penyimpanan eksternal.
Selain itu, aplikasi perlu mendeklarasikan izin WRITE_EXTERNAL_STORAGE
untuk menulis ke
file apa pun di luar direktori khusus aplikasi.
Versi Android yang lebih baru lebih mengandalkan tujuan file daripada lokasinya
untuk menentukan kemampuan aplikasi dalam mengakses dan menulis file tertentu. Secara
khusus, jika aplikasi Anda menargetkan Android 11 (Level API 30) atau yang lebih tinggi,
izin WRITE_EXTERNAL_STORAGE
tidak akan berpengaruh pada akses
aplikasi Anda ke penyimpanan. Model penyimpanan berbasis tujuan ini meningkatkan privasi pengguna
karena aplikasi diberikan akses hanya ke area sistem file perangkat yang
benar-benar digunakan.
Android 11 memperkenalkan izin MANAGE_EXTERNAL_STORAGE
, yang menyediakan
akses tulis ke file di luar direktori khusus aplikasi dan MediaStore
. Untuk
mempelajari izin ini lebih lanjut, dan alasan sebagian besar aplikasi tidak perlu mendeklarasikannya untuk
memenuhi kasus penggunaannya, lihat panduan cara mengelola semua
file di perangkat penyimpanan.
Penyimpanan terbatas
Untuk memberi pengguna kontrol yang lebih besar atas file mereka dan untuk membatasi ketidakrapian file, aplikasi yang menargetkan Android 10 (Level API 29) dan yang lebih tinggi akan diberi akses terbatas ke penyimpanan eksternal, atau penyimpanan terbatas, secara default. Aplikasi semacam itu hanya memiliki akses ke direktori khusus aplikasi pada penyimpanan eksternal, serta jenis media tertentu yang telah dibuat oleh aplikasi.
Gunakan penyimpanan terbatas kecuali jika aplikasi memerlukan akses ke file yang disimpan di luar
direktori khusus aplikasi dan di luar
direktori yang dapat diakses MediaStore
API. Jika Anda menyimpan file khusus aplikasi di penyimpanan eksternal, Anda dapat
mempermudah penerapan penyimpanan terbatas dengan menempatkan file ini di
direktori khusus aplikasi pada penyimpanan
eksternal. Dengan demikian, aplikasi Anda
mempertahankan akses ke file ini saat penyimpanan terbatas diaktifkan.
Guna menyiapkan aplikasi Anda untuk penyimpanan terbatas, lihat panduan kasus penggunaan dan praktik penyimpanan. Jika aplikasi Anda memiliki kasus penggunaan lain yang tidak tercakup oleh penyimpanan terbatas, ajukan permintaan fitur. Anda dapat memilih untuk tidak menggunakan penyimpanan terbatas untuk sementara.
Menampilkan file di perangkat
Untuk melihat file yang disimpan di perangkat, gunakan Device File Explorer Android Studio.
Referensi lainnya
Untuk mengetahui informasi selengkapnya tentang penyimpanan data, lihat referensi berikut.