Software yang Dapat Diupdate di Dokumen Definisi Kompatibilitas (CDD) Android mewajibkan perangkat menerapkan class SystemUpdatePolicy
. SystemUpdatePolicy
memungkinkan aplikasi pemilik perangkat (DO), jika ada, mengontrol penginstalan update sistem.
Memberi tahu pemilik perangkat
Klien over-the-air (OTA) harus memberi tahu aplikasi pemilik perangkat tentang
update OTA masuk menggunakan API sistem. Klien OTA juga harus menyertakan stempel waktu yang mencatat kapan update OTA pertama kali tersedia. Klien OTA dapat memanggil
DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)
untuk memberi tahu aplikasi pemilik perangkat. Jika klien OTA tidak mengetahui apakah update
adalah patch keamanan, klien OTA dapat kembali menggunakan
DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
.
Jika update saat ini tidak tersedia, klien OTA melaporkannya dengan
menetapkan argumen updateReceivedTime
ke -1
.
Sebaiknya kirim notifikasi setiap kali klien OTA melakukan polling ke
server OTA, atau saat OTA didorong ke klien. Anda juga dapat mengirimkan
notifikasi lebih sering.
Kebijakan update sistem
Android 9 meningkatkan kemampuan pemilik perangkat untuk mengontrol update dengan mengizinkan pemilik perangkat menunda update OTA hingga 90 hari. Dengan berfokus pada solusi perangkat khusus (sebelumnya disebut COSU), fitur ini memungkinkan pemilik menjeda versi OS yang berjalan di perangkat selama periode penting, seperti liburan.
Untuk mematuhi CDD, klien OTA harus menerapkan kebijakan perilaku. DO dapat menetapkan kebijakan berikut, yang harus dipatuhi oleh subsistem update sistem perangkat:
Pemilik perangkat juga dapat
menetapkan
periode pembekuan (di Android 9 atau yang lebih baru) yang membekukan versi OS
selama periode penting, seperti hari libur atau waktu sibuk lainnya. Sistem
tidak menginstal update OTA selama periode pembekuan. Sebaiknya gunakan
SystemUpdatePolicy.InstallationOption
(lihat
bagian berikutnya), tetapi klien OTA juga dapat memanggil
SystemUpdatePolicy.getFreezePeriods()
untuk memeriksa apakah perangkat berada dalam periode pembekuan.