Perubahan privasi di Android 10

Android 10 (API level 29) memperkenalkan sejumlah fitur dan perubahan perilaku untuk melindungi privasi pengguna dengan lebih baik. Perubahan ini memperluas transparansi dan kontrol yang dimiliki pengguna atas data mereka dan kemampuan yang diberikan ke aplikasi. Fitur ini mungkin berarti bahwa perilaku atau data tertentu yang diandalkan oleh aplikasi Anda mungkin berperilaku secara berbeda dibandingkan pada versi platform yang lebih lama. Dampak pada aplikasi Anda akan minimal jika aplikasi mengikuti praktik terbaik saat ini untuk menangani data pengguna.

Halaman ini mencantumkan ringkasan dari setiap perubahan.

Perubahan utama

Bagian ini mencakup perubahan penting di Android 10 terkait privasi.

Akses penyimpanan eksternal yang dibatasi ke media dan file aplikasi

Secara default, aplikasi yang menargetkan Android 10 dan yang lebih tinggi diberi akses terbatas ke penyimpanan eksternal, atau penyimpanan terbatas. Aplikasi semacam ini dapat melihat jenis file berikut dalam perangkat penyimpanan eksternal tanpa perlu meminta izin pengguna terkait penyimpanan:

Untuk mempelajari lebih lanjut penyimpanan terbatas, serta cara berbagi, mengakses, dan mengubah file yang disimpan di perangkat penyimpanan eksternal, lihat panduan tentang cara mengelola file dalam penyimpanan eksternal dan mengakses serta mengubah file media.

Akses ke lokasi perangkat di latar belakang memerlukan izin

Untuk mendukung kontrol tambahan yang dimiliki pengguna atas akses aplikasi ke informasi lokasi, Android 10 memperkenalkan izin ACCESS_BACKGROUND_LOCATION.

Tidak seperti izin ACCESS_FINE_LOCATION dan ACCESS_COARSE_LOCATION, izin ACCESS_BACKGROUND_LOCATION hanya memengaruhi akses aplikasi ke lokasi saat berjalan di latar belakang. Aplikasi dianggap mengakses lokasi di latar belakang kecuali jika salah satu kondisi berikut terpenuhi:

  • Aktivitas milik aplikasi bisa dilihat.
  • Aplikasi menjalankan layanan latar depan yang telah mendeklarasikan jenis layanan latar depan dari location.

    Untuk mendeklarasikan jenis layanan latar depan bagi layanan dalam aplikasi Anda, setel targetSdkVersion atau compileSdkVersion aplikasi Anda ke 29 atau yang lebih tinggi. Pelajari lebih lanjut cara layanan latar depan dapat melanjutkan tindakan yang dimulai pengguna yang memerlukan akses ke lokasi.

Jika aplikasi Anda membuat dan memantau pembatasan wilayah dan menargetkan Android 10 (API level 29) atau yang lebih tinggi, Anda harus mendeklarasikan izin ACCESS_BACKGROUND_LOCATION.

Akses diberikan otomatis saat menargetkan Android 9 atau lebih rendah

Jika aplikasi Anda berjalan di Android 10 atau yang lebih tinggi, tetapi menargetkan Android 9 (API level 28) atau yang lebih rendah, platform akan menerapkan perilaku berikut:

  • Jika aplikasi Anda mendeklarasikan elemen <uses-permission> untuk ACCESS_FINE_LOCATION atau ACCESS_COARSE_LOCATION, sistem akan otomatis menambahkan elemen <uses-permission> untuk ACCESS_BACKGROUND_LOCATION selama penginstalan.
  • Jika aplikasi Anda meminta ACCESS_FINE_LOCATION atau ACCESS_COARSE_LOCATION, sistem akan otomatis menambahkan ACCESS_BACKGROUND_LOCATION ke permintaan.

Akses saat perangkat diupgrade ke Android 10

Jika pengguna memberikan akses ke lokasi perangkat kepada aplikasi Anda – baik ACCESS_COARSE_LOCATION atau ACCESS_FINE_LOCATION – lalu mengupgrade perangkatnya dari Android 9 ke Android 10, sistem akan otomatis memperbarui kumpulan izin berbasis lokasi yang diberikan ke aplikasi Anda. Kumpulan izin yang diterima aplikasi Anda setelah upgrade bergantung pada versi SDK target dan izin yang ditentukan, seperti yang ditunjukkan dalam tabel berikut:

Tabel 1. Perubahan status izin lokasi setelah upgrade perangkat ke Android 10

Versi platform target Izin akurasi rendah atau
diperbolehkan?
Izin latar belakang
didefinisikan dalam manifes?
Status izin default yang diperbarui
Android 10 Ya Ya Akses latar depan dan latar belakang
Android 10 Ya Tidak Hanya akses latar depan
Android 10 Tidak (Diabaikan oleh sistem) Tanpa akses
Android 9 atau yang lebih rendah Ya (Otomatis ditambahkan oleh sistem pada waktu upgrade perangkat) Akses latar depan dan latar belakang
Android 9 atau yang lebih rendah Tidak (Diabaikan oleh sistem) Tidak ada akses

Perhatikan bahwa pengguna dapat mengubah tingkat akses ini meskipun setelah sistem otomatis memperbarui akses aplikasi Anda ke lokasi perangkat. Misalnya, pengguna dapat mengurangi akses aplikasi Anda hanya ke latar depan atau mencabut akses sepenuhnya. Sebelum mencoba mengakses lokasi perangkat, terutama dalam layanan latar depan, aplikasi Anda harus memeriksa apakah pengguna masih mengizinkan aplikasi Anda menerima informasi lokasi ini.

Akses dicabut saat mengupdate level API target di perangkat Android 10

Pertimbangkan kasus saat aplikasi Anda sudah diinstal di perangkat yang menjalankan Android 10. Jika Anda mengupdate aplikasi untuk menargetkan Android 10 dalam situasi ini, perangkat akan mencabut izin ACCESS_BACKGROUND_LOCATION.

Untuk mengetahui informasi selengkapnya tentang cara mengambil lokasi perangkat saat aplikasi Anda berjalan di latar belakang, lihat panduan tentang menerima pembaruan lokasi berkala.

Batasan dalam memulai aktivitas dari latar belakang

Mulai Android 10, sistem akan menempatkan batasan untuk memulai aktivitas dari latar belakang. Perubahan perilaku ini membantu meminimalkan gangguan untuk pengguna dan memberikan kontrol yang lebih menyeluruh kepada pengguna atas konten yang ditampilkan di layar. Selama aplikasi Anda memulai aktivitas sebagai akibat langsung dari interaksi pengguna, aplikasi Anda kemungkinan besar tidak terpengaruh oleh batasan ini.

Untuk mempelajari lebih lanjut alternatif yang direkomendasikan untuk memulai aktivitas dari latar belakang, lihat panduan tentang cara mengingatkan pengguna tentang peristiwa yang peka terhadap waktu di aplikasi Anda.

ID dan data

Bagian ini mencantumkan perubahan khusus terkait bekerja dengan ID dan data perangkat.

Penghapusan afinitas kontak

Mulai Android 10, platform tidak melacak informasi afinitas kontak. Akibatnya, jika aplikasi Anda melakukan penelusuran pada kontak pengguna, hasilnya tidak diurutkan menurut frekuensi interaksi.

Panduan tentang ContactsProvider berisi pemberitahuan yang menjelaskan kolom dan metode tertentu yang sudah tidak digunakan lagi di semua perangkat mulai Android 10.

Pengacakan alamat MAC

Di perangkat yang menjalankan Android 10 atau yang lebih tinggi, sistem akan secara default mentransmisikan alamat MAC yang diacak.

Jika aplikasi Anda menangani kasus penggunaan perusahaan, platform akan menyediakan API untuk beberapa operasi yang terkait dengan alamat MAC:

  • Mendapatkan alamat MAC acak: Aplikasi pemilik perangkat dan aplikasi pemilik profil dapat mengambil alamat MAC acak yang ditetapkan ke jaringan tertentu dengan memanggil getRandomizedMacAddress().
  • Mendapatkan alamat MAC pabrik yang sebenarnya: Aplikasi pemilik perangkat dapat mengambil alamat MAC hardware sebenarnya dengan memanggil getWifiMacAddress(). Metode ini berguna untuk melacak sejumlah besar perangkat.

Batasan akses ke sistem file /proc/net

Di perangkat yang menjalankan Android 10 atau yang lebih baru, aplikasi tidak dapat mengakses /proc/net, yang mencakup informasi tentang status jaringan perangkat. Aplikasi yang memerlukan akses ke informasi ini, seperti VPN, harus menggunakan class NetworkStatsManager atau ConnectivityManager.

Batasan ID perangkat yang tidak dapat disetel ulang

Mulai dari Android 10, aplikasi harus memiliki izin hak istimewa READ_PRIVILEGED_PHONE_STATE untuk mengakses ID perangkat yang tidak dapat direset, yang mencakup IMEI dan nomor seri.

Metode yang terpengaruh meliputi:

Jika aplikasi Anda tidak memiliki izin tersebut dan Anda mencoba meminta informasi tentang ID yang tidak dapat direset, respons platform akan bervariasi bergantung pada versi SDK target:

  • Jika aplikasi menargetkan Android 10 atau yang lebih tinggi, SecurityException akan terjadi.
  • Jika aplikasi Anda menargetkan Android 9 (API level 28) atau yang lebih rendah, metode ini akan menampilkan null atau data placeholder jika aplikasi memiliki izin READ_PHONE_STATE. Jika tidak, SecurityException akan terjadi.

Beberapa kasus penggunaan tidak memerlukan ID perangkat yang tidak bisa disetel ulang. Misalnya, jika aplikasi Anda menggunakan ID perangkat yang tidak dapat disetel ulang untuk tujuan pelacakan iklan atau analisis pengguna, gunakan ID Iklan Android untuk kasus penggunaan tertentu tersebut. Untuk mempelajari lebih lanjut, lihat praktik terbaik untuk ID unik.

Akses terbatas ke data papan klip

Kecuali aplikasi Anda merupakan editor metode masukan (IME) default atau saat ini sedang difokuskan, aplikasi tidak bisa mengakses data papan klip di Android 10 atau yang lebih tinggi.

Perlindungan nomor seri perangkat USB

Jika aplikasi menargetkan Android 10 atau yang lebih tinggi, aplikasi tidak dapat membaca nomor seri hingga pengguna memberi aplikasi izin untuk mengakses aksesori atau perangkat USB.

Untuk mempelajari lebih lanjut cara menggunakan perangkat USB, lihat panduan tentang cara mengonfigurasi host USB.

Kamera dan konektivitas

Bagian ini mencantumkan perubahan khusus terkait API konektivitas dan metadata kamera.

Batasan akses ke detail dan metadata kamera

Android 10 mengubah cakupan informasi yang ditampilkan oleh metode getCameraCharacteristics() secara default. Secara khusus, aplikasi Anda harus memiliki izin CAMERA agar dapat mengakses metadata yang berpotensi khusus perangkat yang disertakan dalam nilai yang ditampilkan dengan metode ini.

Untuk mempelajari perubahan ini lebih lanjut, lihat bagian tentang kolom kamera yang memerlukan izin.

Batasan dalam mengaktifkan dan menonaktifkan Wi-Fi

Aplikasi yang menargetkan Android 10 atau yang lebih tinggi tidak dapat mengaktifkan atau menonaktifkan Wi-Fi. Metode WifiManager.setWifiEnabled() selalu menampilkan false.

Jika Anda perlu meminta pengguna untuk mengaktifkan dan menonaktifkan Wi-Fi, gunakan panel setelan.

Batasan akses langsung ke jaringan Wi-Fi yang dikonfigurasi

Untuk melindungi privasi pengguna, konfigurasi manual daftar jaringan Wi-Fi dibatasi untuk aplikasi sistem dan pengontrol kebijakan perangkat (DPC). DPC tertentu dapat berupa pemilik perangkat atau pemilik profil.

Jika aplikasi Anda menargetkan Android 10 atau yang lebih tinggi, dan bukan merupakan aplikasi sistem atau DPC, metode berikut tidak akan memberikan data yang berguna:

Jika aplikasi Anda perlu terhubung ke jaringan Wi-Fi, gunakan metode alternatif berikut:

Beberapa API telepon, Bluetooth, dan Wi-Fi memerlukan izin akses lokasi FINE

Jika menargetkan Android 10 atau yang lebih tinggi, aplikasi Anda harus memiliki izin ACCESS_FINE_LOCATION agar dapat menggunakan beberapa metode dalam API Wi-Fi, Wi-Fi Aware, atau Bluetooth. Bagian berikut mencantumkan class dan metode yang terpengaruh.

Telepon

Wi-Fi

Bluetooth

Izin

Bagian ini menjelaskan pembaruan untuk model izin Android.

Akses ke konten layar yang dibatasi

Untuk melindungi konten layar pengguna, Android 10 mencegah akses diam-diam ke konten layar perangkat dengan mengubah cakupan izin READ_FRAME_BUFFER, CAPTURE_VIDEO_OUTPUT, dan CAPTURE_SECURE_VIDEO_OUTPUT. Mulai Android 10, izin ini hanya ditujukan bagi akses tanda tangan.

Aplikasi yang perlu mengakses konten layar perangkat harus menggunakan MediaProjection API, yang menampilkan perintah untuk meminta pengguna memberikan izin.

Pemeriksaan izin sisi pengguna pada aplikasi lama

Jika aplikasi Anda menargetkan Android 5.1 (API level 22) atau yang lebih rendah, pengguna akan melihat layar izin saat menggunakan aplikasi Anda di perangkat yang menjalankan Android 10 atau yang lebih tinggi untuk pertama kalinya, seperti yang ditunjukkan dalam Gambar 1. Layar ini memberi pengguna kesempatan untuk mencabut akses ke izin yang sebelumnya diberikan oleh sistem ke aplikasi Anda saat diinstal.

Screenshot dialog
Gambar 1. Dialog yang ditampilkan kepada pengguna yang memungkinkan peninjauan izin lama

Pengenalan aktivitas fisik

Android 10 memperkenalkan izin runtime android.permission.ACTIVITY_RECOGNITION untuk aplikasi yang perlu mendeteksi jumlah langkah pengguna atau mengklasifikasikan aktivitas fisik pengguna, seperti berjalan kaki, bersepeda, atau bergerak di dalam kendaraan. Izin ini didesain untuk memberikan visibilitas kepada pengguna terkait cara data sensor perangkat digunakan di Setelan.

Beberapa library dalam layanan Google Play, seperti Activity Recognition API dan Google Fit API, tidak memberikan hasil kecuali jika pengguna telah memberikan izin ini kepada aplikasi Anda.

Satu-satunya sensor bawaan di perangkat yang mengharuskan Anda mendeklarasikan izin ini adalah sensor penghitung langkah dan detektor langkah.

Jika aplikasi Anda menargetkan Android 9 (API level 28) atau yang lebih rendah, sistem akan otomatis memberikan izin android.permission.ACTIVITY_RECOGNITION ke aplikasi Anda, sesuai kebutuhan, jika aplikasi Anda memenuhi setiap kondisi berikut:

  • File manifes menyertakan izin com.google.android.gms.permission.ACTIVITY_RECOGNITION.
  • File manifes tidak menyertakan izin android.permission.ACTIVITY_RECOGNITION.

Jika sistem otomatis memberikan izin android.permission.ACTIVITY_RECOGNITION, aplikasi Anda akan mempertahankan izin tersebut setelah Anda mengupdate aplikasi untuk menargetkan Android 10. Namun, pengguna dapat mencabut izin ini kapan saja di setelan sistem.

Grup izin dihapus dari UI

Mulai dari Android 10, aplikasi tidak dapat mencari tahu bagaimana izin dikelompokkan dalam UI.