Android 13 aggiunge una serie di modifiche comportamentali e API rivolte alle app che modificano il modo in cui le app possono funzionare in background, ma non tutte queste modifiche sono state menzionate al Google all’I/O all’inizio di questo mese. Ad esempio, Android 13 pone nuove restrizioni sulle app che possono programmare sveglie, una modifica progettata per migliorare l’autonomia ma che potrebbe interrompere la funzionalità in app non ottimizzate.
Le app che vogliono eseguire il lavoro in background (cioè mentre l’app non è visibile all’utente) hanno alcune opzioni su Android. Google consiglia di utilizzare l’API di WorkManager per eseguire la maggior parte del lavoro in background, che utilizza internamente il servizio JobScheduler di sistema per pianificare le attività. Sapere come e quando programmare il lavoro in background è importante per gli sviluppatori di app perché la maggior parte dei dispositivi Android funziona a batteria.
In Android 12, Google ha introdotto una nuova autorizzazione chiamata “SCHEDULE_EXACT_ALARM” che le app devono mantenere per programmare allarmi esatti (da cui il nome). Le app destinate al livello API 31 (Android 12) o superiore che dispongono di questa autorizzazione sono in grado di utilizzare le API esatte fornite da AlarmManager, inclusi setExact e setExactAndAllowWhileIdle. Le app destinate al livello API 31 o superiore che non dispongono dell’autorizzazione SCHEDULE_EXACT_ALARM non possono utilizzare queste API a meno che tali app non siano state esentate dalle limitazioni della batteria. Infine, le app destinate al livello API 30 (Android 11) o inferiore non devono disporre di questa autorizzazione per utilizzare API di allarme esatte.
Quando Google ha introdotto l’autorizzazione SCHEDULE_EXACT_ALARM in Android 12, ha impostato il livello di protezione su “normal|appapp”. Pertanto, alle app che richiedevano questa autorizzazione su Android 12 veniva automaticamente concessa l’autorizzazione al momento dell’installazione, sebbene l’utente potesse revocarla dopo l’installazione tramite l’interfaccia a riga di comando di AppOpsManager o andando su Impostazioni > App > Accesso speciale alle app > Allarmi e promemoria.
Sebbene i documenti dello sviluppatore affermino che le sveglie esatti “dovrebbero essere utilizzati solo per le funzionalità rivolte all’utente” e che ci sono solo due casi d’uso accettabili per il loro utilizzo, la piattaforma Android lo considera un suggerimento piuttosto che una regola. Ciò cambierà in Android 13, tuttavia.
Questa autorizzazione è concessa per impostazione predefinita per le app destinate ad Android 12 – 12L ma negata per impostazione predefinita per le app destinate ad Android 13. Il nuovo OS negherà l’autorizzazione SCHEDULE_EXACT_ALARM per impostazione predefinita per le app destinate al livello API 33. Il livello di protezione di questa autorizzazione è stato modificato da “normal|appop” a solo “appop” in Android 13, quindi non viene più concesso automaticamente al momento dell’installazione per tutte le app che lo richiedono.
Tuttavia, Android 13 concederà automaticamente l’autorizzazione per le API dedicate alle sveglie a tutte le app destinate al livello API 31-32 per mantenere la compatibilità con le versioni precedenti. Ciò significa che le app aggiornate e destinate al livello API 33 in esecuzione su Android 13 dovranno chiedere esplicitamente all’utente l’autorizzazione prima che possano programmare sveglie (bene per l’autonomia, poco per la praticità degli sviluppatori).