Android 11 (API level 30) meningkatkan platform lebih lanjut, sehingga memberikan perlindungan yang lebih baik pada aplikasi dan data pengguna di penyimpanan eksternal. Rilis ini memperkenalkan beberapa peningkatan, seperti akses jalur file mentah, operasi edit batch untuk media, dan UI yang diupdate untuk Storage Access Framework.
Rilis ini juga menawarkan peningkatan pada penyimpanan terbatas, yang memudahkan developer memenuhi kasus penggunaan penyimpanan setelah bermigrasi untuk menggunakan model penyimpanan ini.
Penerapan penyimpanan terbatas
Aplikasi yang berjalan di Android 11, tetapi menargetkan Android 10 (API level 29) masih dapat meminta atribut requestLegacyExternalStorage
. Flag ini memungkinkan aplikasi untuk tidak disertakan sementara dalam perubahan terkait
penyimpanan terbatas, seperti memberikan akses ke berbagai direktori dan
jenis file media yang berbeda. Setelah Anda mengupdate aplikasi untuk menargetkan
Android 11, sistem akan mengabaikan flag
requestLegacyExternalStorage
.
Mempertahankan kompatibilitas dengan Android 10
Jika aplikasi Anda tidak diikutsertakan untuk menggunakan penyimpanan terbatas saat berjalan di perangkat Android 10,
lanjutkan untuk menetapkan requestLegacyExternalStorage
ke true
dalam
file manifes aplikasi. Dengan demikian, aplikasi Anda dapat terus berperilaku seperti yang diharapkan
pada perangkat yang menjalankan Android 10.
Memigrasikan data ke direktori yang terlihat saat menggunakan penyimpanan terbatas
Jika aplikasi Anda menggunakan model penyimpanan lama dan sebelumnya menargetkan Android 10 atau yang lebih rendah, Anda mungkin menyimpan data dalam direktori yang tidak dapat diakses oleh aplikasi saat model penyimpanan terbatas diaktifkan. Sebelum menargetkan Android 11, migrasikan data ke direktori yang kompatibel dengan penyimpanan terbatas.
Menguji penyimpanan terbatas
Untuk mengaktifkan penyimpanan terbatas di aplikasi Anda, terlepas dari nilai flag manifes dan versi SDK targetnya, aktifkan flag kompatibilitas aplikasi berikut:
DEFAULT_SCOPED_STORAGE
(diaktifkan untuk semua aplikasi secara default)FORCE_ENABLE_SCOPED_STORAGE
(dinonaktifkan untuk semua aplikasi secara default)
Untuk menonaktifkan penyimpanan terbatas dan menggunakan model penyimpanan lama, batalkan penetapan kedua flag.
Mengelola penyimpanan perangkat
Mulai Android 11, aplikasi yang menggunakan model penyimpanan terbatas hanya dapat mengakses file cache khusus aplikasi miliknya sendiri. Jika aplikasi perlu mengelola penyimpanan perangkat, ikuti petunjuk cara meminta kueri ruang kosong.
- Periksa kapasitas ruang penyimpanan yang tersedia dengan memanggil tindakan intent
ACTION_MANAGE_STORAGE
. Jika kapasitas ruang penyimpanan yang tersedia tidak mencukupi, minta pengguna untuk mengizinkan aplikasi Anda menghapus semua cache. Untuk melakukannya, panggil tindakan intent
ACTION_CLEAR_APP_CACHE
.
Direktori khusus aplikasi di penyimpanan eksternal
Mulai Android 11, aplikasi tidak dapat membuat
direktori khusus aplikasi di penyimpanan eksternal. Untuk
mengakses direktori yang disediakan oleh sistem untuk aplikasi Anda, panggil
getExternalFilesDirs()
.
Akses file media
Untuk mempermudah akses media sekaligus mempertahankan privasi pengguna, Android 11 menambahkan kemampuan berikut ini.
Menjalankan operasi batch
Agar konsisten di seluruh perangkat dan demi menambah kenyamanan pengguna, Android 11 menambahkan beberapa metode yang mempermudah mengelola grup file media.
Mengakses file menggunakan jalur file langsung dan library native
Untuk membantu aplikasi Anda bekerja lebih lancar dengan library
media pihak ketiga, Android 11 memungkinkan Anda menggunakan
API selain MediaStore
API untuk mengakses file media dari
penyimpanan bersama menggunakan jalur file langsung. API ini
meliputi:
File
API.- Library native, seperti
fopen()
.
Akses ke data dari aplikasi lainnya
Untuk melindungi privasi pengguna, pada perangkat yang menjalankan Android 11 atau versi yang lebih tinggi, sistem membatasi akses aplikasi Anda ke direktori pribadi aplikasi lainnya.
Akses ke direktori data pada penyimpanan internal
Android 9 (API level 28) mulai membatasi aplikasi mana yang dapat membuat file di direktori data di penyimpanan internalnya dapat diakses bebas oleh aplikasi lain. Aplikasi yang menargetkan Android 9 atau yang lebih tinggi tidak dapat membuat file dalam direktori datanya dapat diakses bebas.
Android 11 memperluas pembatasan ini. Jika aplikasi Anda menargetkan Android 11, aplikasi tidak dapat mengakses file dalam direktori data aplikasi lain, meskipun aplikasi lain menargetkan Android 8.1 (API level 27) atau yang lebih rendah dan membuat file dalam direktori datanya bisa dibaca bebas.
Akses ke direktori khusus aplikasi di penyimpanan eksternal
Di Android 11, aplikasi tidak dapat lagi mengakses file dalam direktori tetap khusus aplikasi milik aplikasi lain mana pun di penyimpanan eksternal.
Pembatasan akses dokumen
Guna memberikan waktu bagi developer untuk melakukan pengujian, perubahan terkait Storage Access Framework (SAF) berikut ini hanya berlaku jika aplikasi Anda menargetkan Android 11 atau versi yang lebih tinggi.
Akses ke direktori
Anda tidak dapat lagi menggunakan tindakan intent
ACTION_OPEN_DOCUMENT_TREE
untuk meminta akses ke direktori berikut:
- Direktori utama volume penyimpanan internal.
- Direktori utama setiap volume kartu SD yang oleh produsen perangkat dianggap dapat diandalkan, baik kartu tersebut diemulasi maupun dapat dilepas. Volume yang andal adalah volume yang sering kali dapat diakses tanpa masalah oleh aplikasi.
- Direktori
Download
.
Akses ke file
Anda tidak dapat lagi menggunakan tindakan intent
ACTION_OPEN_DOCUMENT_TREE
atau
ACTION_OPEN_DOCUMENT
untuk meminta pengguna memilih file individu dari
direktori berikut:
- Direktori
Android/data/
dan semua subdirektorinya. - Direktori
Android/obb/
dan semua subdirektorinya.
Menguji perubahan
Untuk menguji perubahan perilaku ini, lakukan langkah berikut:
- Panggil intent dengan tindakan
ACTION_OPEN_DOCUMENT
. Pastikan direktoriAndroid/data/
danAndroid/obb/
tidak muncul. - Lakukan salah satu langkah berikut:
- Aktifkan flag
kompatibilitas aplikasi
RESTRICT_STORAGE_ACCESS_FRAMEWORK
. - Targetkan Android 11 atau versi yang lebih tinggi.
- Aktifkan flag
kompatibilitas aplikasi
- Panggil intent dengan tindakan
ACTION_OPEN_DOCUMENT_TREE
. Pastikan apakah direktoriDownload
muncul dan tombol tindakan yang terkait dengan direktori tersebut berwarna abu-abu.
Izin
Android 11 memperkenalkan perubahan berikut ini terkait izin penyimpanan.
Menargetkan versi apa pun
Perubahan berikut diberlakukan di Android 11, terlepas dari versi SDK target aplikasi Anda:
- Izin runtime Penyimpanan diubah namanya menjadi File & Media.
Jika aplikasi Anda masih menggunakan penyimpanan terbatas lalu meminta izin
READ_EXTERNAL_STORAGE
, pengguna akan melihat dialog yang berbeda dengan yang muncul di Android 10. Dialog tersebut menunjukkan bahwa aplikasi Anda meminta akses ke foto dan media, seperti pada Gambar 1.Pengguna dapat melihat aplikasi yang memiliki izin
READ_EXTERNAL_STORAGE
di setelan sistem. Di halaman Setelan > Privasi > Pengelola izin > File dan media, setiap aplikasi yang memiliki izin akan tercantum di bagian Diizinkan untuk semua file. Jika aplikasi Anda menargetkan Android 11, perlu diingat bahwa akses ke "semua file" bersifat hanya baca. Untuk membaca dan menulis ke semua file di penyimpanan bersama menggunakan aplikasi ini, Anda harus memiliki izin akses semua file.
Menargetkan Android 11
Jika aplikasi Anda menargetkan Android 11, baik izin
WRITE_EXTERNAL_STORAGE
maupun izin hak istimewa WRITE_MEDIA_STORAGE
tidak
lagi menyediakan akses tambahan apa pun.
Perlu diingat bahwa pada perangkat yang menjalankan Android 10 (API level 29) atau yang lebih tinggi, aplikasi
Anda dapat berkontribusi ke koleksi media yang ditentukan dengan baik, seperti
MediaStore.Downloads
, tanpa meminta izin apa pun terkait penyimpanan. Pelajari
lebih lanjut cara meminta izin yang diperlukan
saja saat
menangani file media di aplikasi Anda.
Akses semua file
Sebagian besar aplikasi yang memerlukan akses penyimpanan bersama dapat mengikuti praktik terbaik untuk berbagi file media dan membagikan file non-media. Namun, beberapa aplikasi memiliki kasus penggunaan inti yang memerlukan akses file yang luas di perangkat, tetapi tidak dapat melakukannya secara efisien menggunakan praktik terbaik penyimpanan yang ramah privasi. Android menyediakan akses aplikasi khusus yang disebut akses Semua file untuk situasi ini. Untuk mempelajari lebih lanjut, lihat panduan cara mengelola semua file di perangkat penyimpanan.
Referensi lainnya
Untuk informasi selengkapnya tentang perubahan pada penyimpanan di Android 11, lihat materi berikut: