Questa pagina descrive ogni modifica del comportamento che influisce sulle app aggiunta al framework di compatibilità in Android 11 (livello API 30). Utilizza questo elenco insieme alle opzioni per gli sviluppatori e ai comandi ADB per testare e eseguire il debug della tua app mentre ti prepari a scegliere come target Android 11.
ADD_CONTENT_OBSERVER_FLAGS
ID modifica: 150939131
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11, è disponibile una nuova sovraccarica dell'API pubblica
onChange(boolean, Uri, int)
che include un argomento intero flags
.
Questo nuovo metodo è un'alternativa dell'SDK pubblico per le app che utilizzano il metodo sovraccaricato non SDK
onChange()
che include un parametro intero userId
.
ADMIN_APP_PASSWORD_COMPLEXITY
ID modifica: 123562444
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per le app di amministrazione destinate ad Android 11, viene generato un errore ogni volta che un'app imposta un requisito per le password non pertinente alla qualità della password attualmente assegnata. Ad esempio, quando la qualità della password è impostata su
DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
,
un'app non può impostare una lunghezza minima della password. In questo caso, prima di tentare di impostare la lunghezza minima della password, l'app deve prima chiamare il metodo setPasswordQuality()
e solo dopo il metodo setPasswordMinimumLength()
.
Inoltre, quando un'app di amministrazione che ha come target Android 11 abbassa la qualità della password, eventuali requisiti esistenti per le password che non si applicano più vengono reimpostati sui valori predefiniti.
APP_DATA_DIRECTORY_ISOLATION
ID modifica: 143937733
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Le app che hanno come target Android 11 non possono più accedere ai file nelle directory dei dati privati di qualsiasi app, indipendentemente dalla versione dell'SDK di destinazione dell'altra app.
Per saperne di più, consulta Accesso alle directory private.
APN_READING_PERMISSION_CHANGE_ID
ID modifica: 124107808
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11, ora l'accesso al database APN richiede l'autorizzazione Manifest.permission.WRITE_APN_SETTINGS
.
Per scoprire di più su questa modifica, consulta Accesso in lettura limitato al database APN.
BACKGROUND_RATIONALE_CHANGE_ID
ID modifica: 147316723
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Ora le app devono fornire una motivazione valida ogni volta che richiedono di accedere alla posizione del dispositivo in background.
Per scoprire di più su questa modifica, consulta la guida su come accedere alla posizione in background in Android 11, che illustra le modifiche alla privacy relative alla posizione in Android 11.
CALLBACK_ON_CLEAR_CHANGE
ID modifica: 119147584
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Ogni volta che viene chiamata la funzione
Editor.clear
, viene eseguito un 'operazione di callback su
OnSharedPreferenceChangeListener.onSharedPreferenceChanged
con una chiave null
.
Per scoprire di più su questa modifica, consulta Modifiche ai callback per OnSharedPreferenceChangeListener.
CALLBACK_ON_MORE_ERROR_CODE_CHANGE
ID modifica: 130595455
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
I codici di errore sono ora espansi per updateAvailableNetworks(List,
Executor,
Consumer)
e setPreferredOpportunisticDataSubscription(int, boolean, Executor,
Consumer)
.
CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
ID modifica: 148180766
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Si tratta di una sottile modifica del comportamento di startWatchingMode(String, String,
AppOpsManager.OnOpChangedListener)
.
Prima di questa modifica, il sistema richiamava per l'operazione passata. Dopo la modifica, il sistema richiama per l'operazione effettivamente richiesta o per tutte le operazioni passate se non viene specificata alcuna operazione.
CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID
ID modifica: 136219221
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11, i servizi in primo piano ricevono le funzionalità di fotocamera e microfono durante l'uso solo quando R.attr.foregroundServiceType
è configurato come ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA
e ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
rispettivamente nel file manifest. Nelle versioni precedenti di Android, i servizi in primo piano ricevevano automaticamente le funzionalità della videocamera e del microfono.
Per scoprire di più su questa modifica, consulta Tipi di servizi in primo piano in Android 11.
CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK
ID modifica: 128611929
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Le app non possono più pubblicare notifiche popup personalizzate in background. Tuttavia, le app possono comunque pubblicare notifiche popup utilizzando il metodo Toast.makeText(Context, CharSequence,
int)
e le relative varianti in background.
Per scoprire di più su questa modifica, consulta la sezione Le visualizzazioni di popup personalizzate sono bloccate.
CHANGE_RESTRICT_SAW_INTENT
ID modifica: 135920175
Stato predefinito: questa modifica non può essere attivata o disattivata. Viene registrato solo dal framework di compatibilità.
Gli intent che utilizzano l'azione android.settings.MANAGE_APP_OVERLAY_PERMISSION
e lo schema URI dei dati package
non indirizzano più l'utente a una schermata specifica dell'app per la gestione dell'autorizzazione associata. L'utente viene invece indirizzato a una schermata in cui può gestire tutte le app che hanno richiesto l'autorizzazione.
CHANGE_TEXT_TOASTS_IN_THE_SYSTEM
ID modifica: 147798919
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Ora le notifiche popup di testo vengono visualizzate dall'interfaccia utente di sistema anziché all'interno dell'app. In questo modo, le app non possono aggirare le limitazioni relative alla pubblicazione di notifiche popup personalizzate in background.
DEFAULT_SCOPED_STORAGE
ID modifica: 149924527
Stato predefinito: attivato per tutte le app.
Tutte le app che hanno come target Android 11 ora utilizzano lo spazio di archiviazione con ambito per impostazione predefinita e non possono più disattivare lo spazio di archiviazione con ambito.
Tuttavia, puoi testare la tua app senza archiviazione basata sugli ambiti, indipendentemente dalla versione dell'SDK di destinazione e dai valori del flag manifest dell'app, disattivando questa modifica.
Per saperne di più sulle modifiche allo spazio di archiviazione basato su ambiti in Android 11, consulta la sezione Spazio di archiviazione basato su ambiti nella pagina relativa alle modifiche allo spazio di archiviazione di Android in Android 11.
EMPTY_INTENT_ACTION_CATEGORY
ID modifica: 151163173
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11, ora il sistema genera un errore se action
o category
di un filtro intent è una stringa vuota. Un bug
nella piattaforma precedente ad Android 11 ha consentito il passaggio di questa richiesta
senza generare un errore. Tieni presente che non sono inclusi i casi in cui
l'attributo è nullo o mancante, poiché in questi casi è sempre stato generato un errore.
FILTER_APPLICATION_QUERY
ID modifica: 135549675
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Ora le app devono dichiarare i pacchetti e gli intent che intendono utilizzare prima di poter ottenere dettagli su altre app su un dispositivo. Queste dichiarazioni devono essere fatte
utilizzando il tag <queries>
nel file manifest dell'app.
Per scoprire di più su come eseguire query e interagire con altre app installate in Android 11, consulta la pagina della privacy relativa alla visibilità del pacchetto.
FORCE_ENABLE_SCOPED_STORAGE
ID modifica: valore: 132649864
Stato predefinito: disattivato per tutte le app.
Tutte le app che hanno come target Android 11 ora utilizzano lo spazio di archiviazione con ambito per impostazione predefinita e non possono più disattivare lo spazio di archiviazione con ambito.
Tuttavia, se la tua app ha ancora come target Android 10 (livello API 29) o versioni precedenti, puoi testarla con lo spazio di archiviazione limitato, indipendentemente dalla versione SDK target e dai valori del flag manifest dell'app, attivando questa modifica.
Per saperne di più sulle modifiche allo spazio di archiviazione basato su ambiti in Android 11, consulta la sezione Spazio di archiviazione basato su ambiti nella pagina relativa alle modifiche allo spazio di archiviazione di Android in Android 11.
GET_DATA_CONNECTION_STATE_R_VERSION
ID modifica: 148535736
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per controllare la versione dell'SDK per
PreciseDataConnectionState#getDataConnectionState
.
GET_DATA_STATE_R_VERSION
ID modifica: 148534348
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per controllare la versione dell'SDK per
getDataState()
.
GET_PROVIDER_SECURITY_EXCEPTIONS
ID modifica: 150935354
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11 (livello API 30) o versioni successive,
getProvider(String)
non vengono più lanciate eccezioni di sicurezza.
GET_TARGET_SDK_VERSION_CODE_CHANGE
ID modifica: 145147528
Stato predefinito: abilitato per le app che hanno come target Android 10 (livello API 29) o versioni successive.
Per controllare la versione dell'SDK per il metodo SmsManager.sendResolverResult()
.
GWP_ASAN
ID modifica: 135634846
Stato predefinito: disattivato per tutte le app.
Consente il rilevamento dei bug di memoria nativa campionati nelle app.
Per scoprire di più su questa modifica, consulta la guida a GWP-ASan.
HIDE_MAXTARGETSDK_P_HIDDEN_APIS
ID modifica: 149997251
Stato predefinito: abilitato per le app che hanno come target Android 10 (livello API 29) o versioni successive.
Per le app che hanno come target Android 10 (livello API 29) o versioni successive, rimuove l'accesso a tutte le interfacce non SDK che fanno parte dell'elenco max-target-p
(greylist-max-p
) per Android 10 (livello API 29).
HIDE_MAXTARGETSDK_Q_HIDDEN_APIS
ID modifica: 149994052
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11 (livello API 30) o versioni successive, rimuove l'accesso a tutte le interfacce non SDK che fanno parte dell'elenco max-target-q
(greylist-max-q
) per Android 11 (livello API 30).
Per saperne di più su questa modifica, consulta le interfacce non SDK ora bloccate in Android 11.
LISTEN_CODE_CHANGE
ID modifica: 147600208
Stato predefinito: abilitato per le app che hanno come target Android 10 (livello API 29) o versioni successive.
Per controllare la versione dell'SDK per TelephonyManager.listen(PhoneStateListener,
int)
.
MISSING_APP_TAG
ID modifica: 150776642
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11, ora viene generato un errore quando nel file manifest di un'app manca un tag application
o instrumentation
.
NATIVE_HEAP_POINTER_TAGGING
ID modifica: 135754954
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11, le allocazioni dell'heap nativo ora hanno un tag diverso da zero nel byte più significativo.
Per scoprire di più, consulta la sezione Tagging degli indicatori di heap.
PHONE_STATE_LISTENER_LIMIT_CHANGE_ID
ID modifica: 150880553
Stato predefinito: attivato per tutte le app.
Per le app che hanno come target Android 11, ora esiste un limite al numero di oggetti PhoneStateListener
che qualsiasi processo può registrare tramite TelephonyManager.listen(PhoneStateListener, int)
.
Il limite predefinito è 50, ma può essere modificato dagli aggiornamenti della configurazione del dispositivo da remoto.
Questo limite viene applicato utilizzando un
IllegalStateException
lanciato da TelephonyManager.listen(PhoneStateListener, int)
quando il
procedura in violazione tenta di registrare un numero eccessivo di ascoltatori.
PREVENT_META_REFLECTION_BLACKLIST_ACCESS
ID modifica: 142365358
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Le app che hanno come target Android 11 non possono più utilizzare un livello aggiuntivo di riflessione per accedere alle interfacce non SDK con limitazioni.
PROCESS_CAPABILITY_CHANGE_ID
ID modifica: 136274596
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11, il flag
Context.BIND_INCLUDE_CAPABILITIES
ora può essere utilizzato per passare le funzionalità di utilizzo in corso dal processo client a un servizio vincolato.
REMOVE_ANDROID_TEST_BASE
ID modifica: 133396946
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per le app destinate ad Android 11, la raccolta android.test.base
è stata rimossa se l'app non dipende da android.test.runner
(in quanto dipende dalle classi della raccolta android.test.base
).
REQUEST_ACCESSIBILITY_BUTTON_CHANGE
ID modifica: 136293963
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Per i servizi di accessibilità che hanno come target Android 11, il
FLAG_REQUEST_ACCESSIBILITY_BUTTON
flag ora deve essere specificato nel file di metadati del servizio di accessibilità.
In caso contrario, l'indicatore viene ignorato.
Per scoprire di più su questa modifica, consulta Dichiarare l'utilizzo del pulsante di accessibilità nel file di metadati.
RESOURCES_ARSC_COMPRESSED
ID modifica: 132742131
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Le app che hanno come target Android 11 (livello API 30) non possono essere installate se contengono un file resources.arsc
compresso o se questo file non è allineato a un confine di 4 byte.
Per scoprire di più su questa modifica, consulta la sezione File di risorse compresse.
RESTRICT_STORAGE_ACCESS_FRAMEWORK
ID modifica: 141600225
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Se la tua app ha come target Android 11 e utilizza il Framework di accesso allo spazio di archiviazione (SAF), non puoi più accedere a determinate directory utilizzando le azioni intent ACTION_OPEN_DOCUMENT
e ACTION_OPEN_DOCUMENT_TREE
. Per scoprire di più su queste modifiche, consulta la sezione Limitazioni di accesso ai documenti nella pagina che illustra gli aggiornamenti della privacy relativi allo spazio di archiviazione in Android 11.
SELINUX_LATEST_CHANGES
ID modifica: 143539591
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Questa modifica impedisce alle app di accedere al dominio SELinux untrusted_app_R-targetSDk.
Questa è una delle modifiche fondamentali del framework di compatibilità che consente alle app di attivare/disattivare altre modifiche bloccate da targetSdkVersion
senza modificare il targetSDKVersion
dell'app. Per questo motivo, non devi disattivare questa modifica per un'app che ha come target Android 11, altrimenti l'app non funzionerà.
Questa modifica non ha alcun effetto sulle app che utilizzano un ID utente condiviso.
THROW_SECURITY_EXCEPTIONS
ID modifica: 147340954
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Prima di Android 11, un SecurityException
veniva generato dalle API setEnabled
solo per un errore di autorizzazione. In Android 11 questo non è più vero e un SecurityException
può essere generato per una serie di motivi, nessuno dei quali è esposto all'autore della chiamata.
Per mantenere il comportamento esistente dell'API, se si verifica un errore di applicazione di un'autorizzazione precedente o di un attore per un'app che non ha come target Android 11, l'eccezione viene forzata in un IllegalStateException
esistente nel codice sorgente precedente ad Android 11.
USE_SET_LOCATION_ENABLED
ID modifica: 117835097
Stato predefinito: abilitato per le app che hanno come target Android 11 (livello API 30) o versioni successive.
Le app di amministrazione che hanno come target Android 11 non possono più utilizzare
DevicePolicyManager.setSecureSetting(ComponentName, String, String)
per modificare l'impostazione Settings.Secure.LOCATION_MODE
ritrattenuta. Dovrebbe utilizzare DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
.