Questa pagina descrive ogni modifica del comportamento impatto dell'app aggiunta al framework di compatibilità in Android 11 (livello API 30). Utilizza questo elenco insieme alle opzioni per sviluppatori e ai comandi ADB per testare ed eseguire il debug della tua app mentre ti prepari a scegliere come target Android 11.
ADD_CONTENT_OBSERVER_FLAGS
Modifica ID: 150939131
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11, è disponibile un nuovo sovraccarico dell'API pubblica
onChange(boolean, Uri, int)
che include un argomento flags
intero.
Questo nuovo metodo è un'alternativa pubblica all'SDK per le app che utilizzano il metodo con sovraccarico onChange()
non SDK che include un argomento userId
intero.
ADMIN_APP_PASSWORD_COMPLEXITY
Modifica ID: 123562444
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Per le app di amministrazione che hanno come target Android 11, genera un errore ogni volta che un'app imposta un requisito per la password non pertinente alla qualità della password attualmente assegnata. Ad esempio, se la qualità della password è impostata su DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
, un'app non potrebbe impostare una lunghezza minima della password. In questo caso, prima
di provare a impostare la lunghezza minima della password, l'app deve chiamare il metodo
setPasswordQuality()
e poi chiamare il metodo
setPasswordMinimumLength()
.
Inoltre, quando un'app di amministrazione che ha come target Android 11 riduce la qualità delle password, gli eventuali requisiti per le password esistenti che non sono più applicabili vengono reimpostati ai valori predefiniti.
APP_DATA_DIRECTORY_ISOLATION
Modifica ID: 143937733
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Le app destinate ad Android 11 non possono più accedere ai file nelle directory di dati private di qualsiasi app, a prescindere dalla versione dell'SDK target dell'altra app.
Per ulteriori informazioni, consulta Accesso a directory private.
APN_READING_PERMISSION_CHANGE_ID
Modifica ID: 124107808
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11, l'accesso al database APN ora
richiede l'autorizzazione
Manifest.permission.WRITE_APN_SETTINGS
.
Per scoprire di più su questa modifica, consulta Accesso in lettura limitato al database APN.
ID_CHANGE_ID_BACKGROUND_RATIONALE_CHANGE
Modifica ID: 147316723
Stato predefinito: attivato per le app destinate ad 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
Modifica ID: 119147584
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Ogni volta che viene chiamato
Editor.clear
, viene ora effettuato un callback a
OnSharedPreferenceChangeListener.onSharedPreferenceChanged
con una chiave null
.
Per scoprire di più su questa modifica, vedi Modifiche ai callback per OnSharedPreferenceChangeListener.
CALLBACK_ON_MORE_ERROR_CODE_CHANGE
Modifica ID: 130595455
Stato predefinito: attivato per le app destinate ad 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
Modifica ID: 148180766
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Si tratta di una leggera modifica del comportamento di startWatchingMode(String, String,
AppOpsManager.OnOpChangedListener)
.
Prima di questa modifica, il sistema richiamava l'operazione passata. Dopo la modifica, il sistema richiama l'operazione effettivamente richiesta o tutte le operazioni cambiate se non è specificata alcuna operazione.
ID CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID
Modifica ID: 136219221
Stato predefinito: attivato per le app destinate ad 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à
della fotocamera e del microfono mentre sono in uso solo se
R.attr.foregroundServiceType
è configurata 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 fotocamera e del microfono.
Per scoprire di più su questa modifica, vedi Tipi di servizi in primo piano in Android 11.
CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK
Modifica ID: 128611929
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Le app non possono più pubblicare toast personalizzati in background. Tuttavia, le app possono comunque pubblicare toast utilizzando il metodo Toast.makeText(Context, CharSequence,
int)
e le sue varianti in background.
Per scoprire di più su questa modifica, consulta Le visualizzazioni toast personalizzate sono bloccate.
CHANGE_RESTRICT_SAW_INTENT (Modifica_RESTRICT_SAW_INTENT)
Modifica ID: 135920175
Stato predefinito: questa modifica non può essere attivata/disattivata. Viene registrata solo dal framework di compatibilità.
Gli intent che utilizzano l'azione android.settings.MANAGE_APP_OVERLAY_PERMISSION
e lo schema dell'URI di 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
Modifica ID: 147798919
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
I toast di testo vengono ora visualizzati dall'interfaccia utente di sistema anziché in-app. In questo modo le app non possono eludere le limitazioni relative alla pubblicazione di toast personalizzati in background.
DEFAULT_SCOPED_STORAGE
Modifica ID: 149924527
Stato predefinito: attivata per tutte le app.
Tutte le app destinate ad Android 11 ora utilizzano l'archiviazione con ambito per impostazione predefinita e non possono più disattivare l'archiviazione con ambito.
Tuttavia, puoi testare l'app senza archiviazione con ambito, indipendentemente dalla versione dell'SDK target e dai valori del flag manifest dell'app, disattivando questa modifica.
Per saperne di più sulle modifiche all'archiviazione con ambito in Android 11, consulta la sezione Archiviazione con ambito nella pagina relativa alle modifiche allo spazio di archiviazione di Android in Android 11.
CATEGORIA EMPTY_INTENT_ACTION_CATEGORY
Modifica ID: 151163173
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11, il sistema ora genera un errore se action
o
category
di un filtro per intent sono una stringa vuota. Un bug
nella piattaforma precedente ad Android 11 ha consentito il superamento della richiesta
senza generare un errore. Tieni presente che non sono inclusi i casi in cui l'attributo è nullo o mancante, perché ha generato sempre un errore.
FILTER_APPLICATION_QUERY
Modifica ID: 135549675
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Ora le app devono dichiarare i pacchetti e gli intent che intendono utilizzare prima di poter ricevere dettagli su altre app presenti su un dispositivo. Queste dichiarazioni devono essere effettuate
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 sulla privacy relativa alla visibilità dei pacchetti.
FORCE_ENABLE_SCOPED_STORAGE
Modifica ID: Valore: 132649864
Stato predefinito: disabilitato per tutte le app.
Tutte le app destinate ad Android 11 ora utilizzano l'archiviazione con ambito per impostazione predefinita e non possono più disattivare l'archiviazione con ambito.
Tuttavia, se la tua app ha ancora come target Android 10 (livello API 29) o versioni precedenti, puoi testarla con l'archiviazione con ambito, indipendentemente dai valori della versione dell'SDK di destinazione e del flag manifest dell'app, attivando questa modifica.
Per saperne di più sulle modifiche all'archiviazione con ambito in Android 11, consulta la sezione Archiviazione con ambito nella pagina relativa alle modifiche allo spazio di archiviazione di Android in Android 11.
GET_DATA_CONNECTION_STATE_R_VERSION
Modifica ID: 148535736
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Per controllare la versione dell'SDK per PreciseDataConnectionState#getDataConnectionState
.
GET_DATA_STATE_R_VERSION
Modifica ID: 148534348
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Per controllare la versione dell'SDK per getDataState()
.
ECCEZIONI_DI_SICUREZZA_GET_PROVIDER
Modifica ID: 150935354
Stato predefinito: attivato per le app destinate ad 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 genera più eccezioni di sicurezza.
GET_TARGET_SDK_VERSION_CODE_CHANGE
Modifica ID: 145147528
Stato predefinito: attivato per le app destinate ad Android 10 (livello API 29) o versioni successive.
Per controllare la versione dell'SDK per il metodo SmsManager.sendResolverResult()
.
GWP_ASAN
Modifica ID: 135634846
Stato predefinito: disabilitato per tutte le app.
Consente il rilevamento di bug relativi alla memoria nativa campionata nelle app.
Per scoprire di più su questa modifica, consulta la guida di GWP-ASan.
HIDE_MAXTARGETSDK_P_HIDDEN_APIS
Modifica ID: 149997251
Stato predefinito: attivato per le app destinate ad 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
Modifica ID: 149994052
Stato predefinito: attivato per le app destinate ad 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 scoprire di più su questa modifica, consulta l'articolo sulle interfacce non SDK che sono ora bloccate in Android 11.
ASCOLTA_CODE_CHANGE
Modifica ID: 147600208
Stato predefinito: attivato per le app destinate ad Android 10 (livello API 29) o versioni successive.
Per controllare la versione dell'SDK per TelephonyManager.listen(PhoneStateListener,
int)
.
APP_TAG MANCANTE
Modifica ID: 150776642
Stato predefinito: attivato per le app destinate ad 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
.
TAGGING NATIVE_HEAP_POINTER_TAGGING
Modifica ID: 135754954
Stato predefinito: attivato per le app destinate ad 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 del puntatore heap.
PHONE_STATE_LISTENER_LIMIT_CHANGE_ID
Modifica ID: 150880553
Stato predefinito: attivata per tutte le app.
Per le app che hanno come target Android 11, è ora previsto un limite al numero
di oggetti PhoneStateListener
che qualsiasi processo può registrare tramite TelephonyManager.listen(PhoneStateListener, int)
.
Il limite predefinito è 50, che può essere modificato dagli aggiornamenti della configurazione dei dispositivi remoti.
Questo limite viene applicato utilizzando un valore IllegalStateException
generato da TelephonyManager.listen(PhoneStateListener, int)
quando il processo con problemi tenta di registrare un numero di listener eccessivo.
PREVENZIONE_META_REFLECTION_BLACKLIST_ACCESS
Modifica ID: 142365358
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Le app che hanno come target Android 11 non possono più utilizzare un ulteriore livello di riflesso per accedere a interfacce non SDK limitate.
PROCESS_CAPABILITY_CHANGE_ID
Modifica ID: 136274596
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11, ora è possibile utilizzare il flag Context.BIND_INCLUDE_CAPABILITIES
per trasferire le funzionalità in uso dal processo client a un servizio associato.
REMOVE_ANDROID_TEST_BASE
Modifica ID: 133396946
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Per le app che hanno come target Android 11, la libreria android.test.base
è stata rimossa se l'app non dipende da android.test.runner
(perché
dipende dalle classi della libreria android.test.base
).
REQUEST_ACCESSIBILITY_button_CHANGE
Modifica ID: 136293963
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Per i servizi di accessibilità che hanno come target Android 11, ora è necessario specificare il flag FLAG_REQUEST_ACCESSIBILITY_BUTTON
nel file dei metadati del servizio di accessibilità.
In caso contrario, il flag viene ignorato.
Per scoprire di più su questa modifica, consulta la pagina Dichiarare l'utilizzo del pulsante di accessibilità nel file di metadati.
RISORSE_ARSC_COMPRESSED
Modifica ID: 132742131
Stato predefinito: attivato per le app destinate ad 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
al limite di 4 byte.
Per saperne di più su questa modifica, vedi File di risorse compressi.
RESTRICT_STORAGE_ACCESS_FRAMEWORK
Modifica ID: 141600225
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Se la tua app ha come target Android 11 e utilizza Storage Access
Framework (SAF), non puoi più
accedere a determinate directory utilizzando le azioni di intent
ACTION_OPEN_DOCUMENT
e
ACTION_OPEN_DOCUMENT_TREE
. Per ulteriori informazioni su queste modifiche, consulta la sezione Limitazioni di accesso ai documenti nella pagina che illustra gli aggiornamenti della privacy relativi all'archiviazione in Android 11.
SELINUX_LATEST_CHANGES
Modifica ID: 143539591
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Questa modifica consente alle app di accedere al dominio SELinux trusted_app_R-targetSDk.
Questa è una delle modifiche fondamentali nel framework di compatibilità che
consente alle app di attivare/disattivare altre modifiche controllate da targetSdkVersion
senza
modificare il valore 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 effetto per le app che utilizzano un ID utente condiviso.
ECCEZIONI_DI_THROW_SICUREZZA
Modifica ID: 147340954
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Prima di Android 11, veniva generata una SecurityException
solo dalle API setEnabled
per un errore di autorizzazione. In Android 11 questo non è più valido e per una serie di motivi è possibile lanciare un SecurityException
, nessuno dei quali è esposto al chiamante.
Per mantenere il comportamento esistente dell'API, se si verifica un errore di autorizzazione precedente o un errore di applicazione
dell'attore per un'app che non ha come target
Android 11, l'eccezione viene forzata in una
IllegalStateException
esistente nell'origine precedente ad Android 11.
USE_SET_LOCATION_ENABLED
Modifica ID: 117835097
Stato predefinito: attivato per le app destinate ad Android 11 (livello API 30) o versioni successive.
Le app amministrative che hanno come target Android 11 non possono più utilizzare DevicePolicyManager.setSecureSetting(ComponentName, String, String)
per modificare l'impostazione Settings.Secure.LOCATION_MODE
deprecata. Dovrebbe usare DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
.