SdkSandboxManager
  public
  
  final
  
  class
  SdkSandboxManager
  
    extends Object
  
  
  
  
  
  
| java.lang.Object | |
| 🎞 | android.app.sdksandbox.SdkSandboxManager | 
Fornisce le API per caricare SDKs nel
 processo sandbox SDK e poi interagire con essi.
 
SDK Sandbox è un processo Java eseguito in un intervallo UID separato. Ogni app può avere il proprio SDK processo sandbox.
Innanzitutto, l'app deve dichiarare gli SDK da cui dipende nel file manifest utilizzando il tag <uses-sdk-library>. Le app possono caricare nella sandbox SDK solo gli SDK da cui dipendono.
Riepilogo
| Classi nidificate | |
|---|---|
| 
        
        
        
        
        interface | SdkSandboxManager.SdkSandboxProcessDeathCallbackUn callback per monitorare gli eventi di morte sandbox SDK. | 
| Costanti | |
|---|---|
| String | EXTRA_DISPLAY_IDIl nome della chiave da utilizzare nei campi Bundle di  | 
| String | EXTRA_HEIGHT_IN_PIXELSIl nome della chiave da utilizzare nei campi Bundle di  | 
| String | EXTRA_HOST_TOKENIl nome della chiave da utilizzare nei campi Bundle di  | 
| String | EXTRA_SURFACE_PACKAGEIl nome della chiave nel bundle che viene passata alla funzione  | 
| String | EXTRA_WIDTH_IN_PIXELSIl nome della chiave da utilizzare nei campi Bundle di  | 
| int | LOAD_SDK_ALREADY_LOADEDL'SDK è già caricato. | 
| int | LOAD_SDK_INTERNAL_ERRORErrore interno durante il caricamento dell'SDK. | 
| int | LOAD_SDK_NOT_FOUNDSDK non trovato. | 
| int | LOAD_SDK_SDK_DEFINED_ERRORErrore dell'SDK dopo il caricamento. | 
| int | LOAD_SDK_SDK_SANDBOX_DISABLEDLa sandbox dell'SDK è disabilitata. | 
| int | REQUEST_SURFACE_PACKAGE_INTERNAL_ERRORErrore interno durante la richiesta di un  | 
| int | REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADEDL'SDK non viene caricato durante la richiesta di un  | 
| int | SDK_SANDBOX_PROCESS_NOT_AVAILABLEIl processo sandbox SDK non è disponibile. | 
| String | SDK_SANDBOX_SERVICEUsalo con  | 
| int | SDK_SANDBOX_STATE_DISABLEDLa sandbox dell'SDK è disabilitata. | 
| int | SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATIONLa sandbox dell'SDK è abilitata. | 
| Metodi pubblici | |
|---|---|
| 
        
        
        
        
        
        void | 
      addSdkSandboxProcessDeathCallback(Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
      Aggiunge un callback che viene registrato per gli eventi del ciclo di vita della sandbox SDK, ad esempio SDK sandbox la morte. | 
| 
        
        
        
        
        
        void | 
      addSyncedSharedPreferencesKeys(Set<String> keys)
      Aggiunge chiavi al set di chiavi da sincronizzare dal valore predefinito dell'app  | 
| 
        
        
        
        
        
        List<AppOwnedSdkSandboxInterface> | 
      getAppOwnedSdkSandboxInterfaces()
      Recupera un elenco di  | 
| 
        
        
        
        
        
        List<SandboxedSdk> | 
      getSandboxedSdks()
      Recupera le informazioni sugli SDK caricati nella sandbox. | 
| 
        
        
        static
        
        
        int | 
      getSdkSandboxState()
      Restituisce lo stato attuale della disponibilità della funzionalità sandbox dell'SDK. | 
| 
        
        
        
        
        
        Set<String> | 
      getSyncedSharedPreferencesKeys()
      Restituisce le chiavi impostate che vengono sincronizzate dal valore predefinito dell'app  | 
| 
        
        
        
        
        
        void | 
      loadSdk(String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
      Carica l'SDK in un processo Java della sandbox dell'SDK. | 
| 
        
        
        
        
        
        void | 
      registerAppOwnedSdkSandboxInterface(AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
      Registra  | 
| 
        
        
        
        
        
        void | 
      removeSdkSandboxProcessDeathCallback(SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
      Rimuove un valore  | 
| 
        
        
        
        
        
        void | 
      removeSyncedSharedPreferencesKeys(Set<String> keys)
      Rimuove le chiavi dal set di chiavi aggiunte utilizzando  Le chiavi rimosse verranno cancellate dalla sandbox dell'SDK se sono già state sincronizzate. | 
| 
        
        
        
        
        
        void | 
      requestSurfacePackage(String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
      Invia una richiesta per un pacchetto Surface all'SDK. | 
| 
        
        
        
        
        
        void | 
      startSdkSandboxActivity(Activity fromActivity, IBinder sdkActivityToken)
      Avvia un  | 
| 
        
        
        
        
        
        void | 
      unloadSdk(String sdkName)
      Scarica un SDK che è stato caricato in precedenza dal chiamante. | 
| 
        
        
        
        
        
        void | 
      unregisterAppOwnedSdkSandboxInterface(String name)
      Annulla la registrazione di  | 
| Metodi ereditati | |
|---|---|
Costanti
EXTRA_DISPLAY_ID
public static final String EXTRA_DISPLAY_ID
Il nome della chiave da utilizzare nei campi Bundle di requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver); il suo valore deve definire l'ID intero della chiave
 per visualizzare SurfacePackage.
Valore costante: "android.app.sdksandbox.extra.DISPLAY_ID"
EXTRA_HEIGHT_IN_PIXELS
public static final String EXTRA_HEIGHT_IN_PIXELS
Il nome della chiave da utilizzare nei campi Bundle di requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver); il suo valore deve definire l'altezza intera della SurfacePackage in pixel.
Valore costante: "android.app.sdksandbox.extra.HEIGHT_IN_PIXELS"
HOST_TOKEN extra
public static final String EXTRA_HOST_TOKEN
Il nome della chiave da utilizzare nei campi Bundle di requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver). Il suo valore deve presentare il token restituito da SurfaceView.getHostToken() una volta che il SurfaceView è stato
 aggiunto alla gerarchia delle visualizzazioni. Per attivare i report ANR è accettato solo un valore diverso da null.
Valore costante: "android.app.sdksandbox.extra.HOST_TOKEN"
PACCHETTO_EXTRA_SURFACE_PACKAGE
public static final String EXTRA_SURFACE_PACKAGE
Il nome della chiave nel bundle che viene passata alla funzione onResult dell'elemento OutcomeReceiver, che è un campo di requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver). Il suo valore presenta il SurfacePackage richiesto.
Valore costante: "android.app.sdksandbox.extra.SURFACE_PACKAGE"
EXTRA_WIDTH_IN_PIXELS
public static final String EXTRA_WIDTH_IN_PIXELS
Il nome della chiave da utilizzare nei campi Bundle di requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver); il suo valore deve definire la larghezza intera di SurfacePackage in pixel.
Valore costante: "android.app.sdksandbox.extra.WIDTH_IN_PIXELS"
LOAD_SDK_ALREADY_LOADED
public static final int LOAD_SDK_ALREADY_LOADED
L'SDK è già caricato.
Questo indica che l'applicazione client ha tentato di ricaricare lo stesso SDK chiamando loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) dopo essere stato
 caricato correttamente.
Valore costante: Guida introduttiva (0x00000065)
LOAD_SDK_INTERNAL_ERROR
public static final int LOAD_SDK_INTERNAL_ERROR
Errore interno durante il caricamento dell'SDK.
Questo indica un errore interno generico durante l'applicazione della chiamata dal client un'applicazione.
Valore costante: 500 (0x000001f4)
LOAD_SDK_NOT_FOUND
public static final int LOAD_SDK_NOT_FOUND
SDK non trovato.
Questo indica che l'applicazione client ha tentato di caricare un SDK non esistente chiamando loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver).
Valore costante: 100 (0x00000064)
LOAD_SDK_SDK_DEFINED_ERROR
public static final int LOAD_SDK_SDK_DEFINED_ERROR
Errore dell'SDK dopo il caricamento.
Questo indica che l'SDK ha riscontrato un errore durante l'inizializzazione post-caricamento. La
 puoi ricavarne i dettagli dal bundle restituito in LoadSdkException tramite
 OutcomeReceiver passato a SdkSandboxManager#loadSdk.
Valore costante: 102 (0x00000066)
LOAD_SDK_SDK_SANDBOX_DISABLED
public static final int LOAD_SDK_SDK_SANDBOX_DISABLED
La sandbox dell'SDK è disabilitata.
Questo indica che la sandbox dell'SDK è disabilitata. Eventuali tentativi successivi di caricare gli SDK anche questo avvio non andrà a buon fine.
Valore costante: 103 (0x00000067)
REQUEST_SURFACE_PACKAGE_ERRORE_INTERNO
public static final int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
Errore interno durante la richiesta di un SurfacePackage.
 
Questo indica un errore interno generico durante la richiesta di
 SurfacePackage.
Valore costante: 700 (0x000002bc)
REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
public static final int REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
L'SDK non viene caricato durante la richiesta di un SurfacePackage.
 
Questo indica che l'SDK per cui viene richiesto l'oggetto SurfacePackage non è
 caricato, perché la sandbox è terminata o non è stata caricata.
Valore costante: 701 (0x000002bd)
SDK_SANDBOX_PROCESS_NOT_AVAILABLE
public static final int SDK_SANDBOX_PROCESS_NOT_AVAILABLE
Il processo sandbox SDK non è disponibile.
Questo indica che il processo sandbox SDK non è disponibile perché è terminato. è disconnesso o non è stato creato.
Valore costante: 503 (0x000001f7)
SDK_SANDBOX_SERVICE
public static final String SDK_SANDBOX_SERVICE
Usalo con Context#getSystemService(String) per recuperare un SdkSandboxManager
 per interagire con gli SDK appartenenti a questa applicazione client.
Valore costante: "sdk_sandbox"
SDK_SANDBOX_STATE_DISABLED
public static final int SDK_SANDBOX_STATE_DISABLED
La sandbox dell'SDK è disabilitata.
SdkSandboxManager API sono nascoste. I tentativi di chiamare la persona comporteranno UnsupportedOperationException.
Valore costante: 0 (0x00000000)
SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
public static final int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
La sandbox dell'SDK è abilitata.
L'app può utilizzare le API SdkSandboxManager per caricare SDKs da cui dipende
 il processo sandbox SDK corrispondente.
Valore costante: 2 (0x00000002)
Metodi pubblici
addSdkSandboxProcessDeathCallback
public void addSdkSandboxProcessDeathCallback (Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Aggiunge un callback che viene registrato per gli eventi del ciclo di vita della sandbox SDK, ad esempio SDK sandbox la morte. Se la sandbox non è stata ancora creata quando viene chiamato, la richiesta verrà archiviati fino alla creazione di una sandbox, dopodiché viene attivata per quella sandbox. Più di uno è possibile aggiungere callback per rilevare la morte e non verranno rimossi quando la sandbox muore.
| Parametri | |
|---|---|
| callbackExecutor | Executor: ilExecutorsu cui richiamare il callback
 Questo valore non può esserenull.
 Gli eventi di callback e listener vengono inviati tramite questoExecutor, che consente di controllare facilmente quale thread
 in uso. Per inviare eventi tramite il thread principale del tuo
 puoi utilizzareContext.getMainExecutor().
 In caso contrario, specifica un valoreExecutorche effettui l'invio a un thread appropriato. | 
| callback | SdkSandboxManager.SdkSandboxProcessDeathCallback: ilSdkSandboxProcessDeathCallbackche riceverà la sandbox dell'SDK
     degli eventi del ciclo di vita.
 
 Questo valore non può esserenull. | 
addSyncedSharedPreferencesKey
public void addSyncedSharedPreferencesKeys (Set<String> keys)
Aggiunge chiavi al set di chiavi sincronizzate dal valore predefinito dell'app SharedPreferences all'SDK
 sandbox.
 
I dati sincronizzati saranno disponibili per la lettura da parte degli SDK tramite l'API SdkSandboxController.getClientSharedPreferences().
 
Per interrompere la sincronizzazione di qualsiasi chiave aggiunta tramite questa API, utilizza removeSyncedSharedPreferencesKeys(java.util.Set).
 
La sincronizzazione si interrompe se l'app si riavvia e l'utente deve chiamare di nuovo questa API per ricreare il pool di chiavi per la sincronizzazione.
Nota: questa classe non supporta l'utilizzo in più processi.
| Parametri | |
|---|---|
| keys | Set: insieme di chiavi che verranno sincronizzate con la sandbox.
 
 Questo valore non può esserenull. | 
Interfacce getAppOwnedSdkSandbox
public List<AppOwnedSdkSandboxInterface> getAppOwnedSdkSandboxInterfaces ()
Recupera un elenco di AppOwnedSdkSandboxInterface registrati per un'app
| Ritorni | |
|---|---|
| List<AppOwnedSdkSandboxInterface> | elenco vuoto se callInfo non viene trovato nella mappa, altrimenti un elenco di AppOwnedSdkSandboxInterfaceQuesto valore non può esserenull. | 
getSandboxedSdks
public List<SandboxedSdk> getSandboxedSdks ()
Recupera le informazioni sugli SDK caricati nella sandbox.
| Ritorni | |
|---|---|
| List<SandboxedSdk> | Elenco di SandboxedSdkcontenente tutti gli SDK attualmente caricati.
 
 Questo valore non può esserenull. | 
getSdkSandboxState
public static int getSdkSandboxState ()
Restituisce lo stato attuale della disponibilità della funzionalità sandbox dell'SDK.
| Ritorni | |
|---|---|
| int | Il valore è SDK_SANDBOX_STATE_DISABLEDoSDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION | 
getSyncedSharedPreferencesKey
public Set<String> getSyncedSharedPreferencesKeys ()
Restituisce le chiavi impostate che vengono sincronizzate dal valore predefinito dell'app SharedPreferences a
 la sandbox dell'SDK.
| Ritorni | |
|---|---|
| Set<String> | Questo valore non può essere null. | 
caricamentoSdk
public void loadSdk (String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
Carica l'SDK in un processo Java della sandbox dell'SDK.
Carica la libreria SDK con sdkName in un processo sandbox SDK in modo asincrono. La
 il chiamante riceverà una notifica tramite il receiver.
 
Il chiamante dovrebbe già dichiarare SDKs da cui dipende il proprio file manifest utilizzando il tag <uses-sdk-library>. Il chiamante può caricare nell'SDK solo SDKs da cui dipende
 sandbox.
 
Quando l'applicazione client carica il primo SDK, viene eseguito un nuovo processo sandbox SDK è stato creato. Se è già stata creata una sandbox per l'applicazione client, gli SDK aggiuntivi verrà caricato nella stessa sandbox.
Questa API può essere chiamata solo quando il chiamante è in esecuzione in primo piano. Chiamate da
 uno sfondo comporterà la restituzione di LoadSdkException in receiver.
| Parametri | |
|---|---|
| sdkName | String: nome dell'SDK da caricare.
 Questo valore non può esserenull. | 
| params | Bundle: parametri aggiuntivi da passare all'SDK sotto forma diBundle.
     come concordato tra il client e l'SDK.
 Questo valore non può esserenull. | 
| executor | Executor: ilExecutorsu cui richiamare il ricevitore.
 Questo valore non può esserenull.
 Gli eventi di callback e listener vengono inviati tramite questoExecutor, che consente di controllare facilmente quale thread
 in uso. Per inviare eventi tramite il thread principale del tuo
 puoi utilizzareContext.getMainExecutor().
 In caso contrario, specifica un valoreExecutorche effettui l'invio a un thread appropriato. | 
| receiver | OutcomeReceiver: questo riceve unSandboxedSdkin un'esecuzione corretta, oppureLoadSdkException.
 
 Questo valore non può esserenull. | 
Interfaccia registriAppProprietàSdkSandbox
public void registerAppOwnedSdkSandboxInterface (AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
Registra AppOwnedSdkSandboxInterface per un processo di app.
 
Registrazione di un AppOwnedSdkSandboxInterface che ha lo stesso nome di una precedente
 nell'interfaccia registrata produrrà IllegalStateException.
 
AppOwnedSdkSandboxInterface#getName() indica il nome dell'interfaccia.
| Parametri | |
|---|---|
| appOwnedSdkSandboxInterface | AppOwnedSdkSandboxInterface: l'AppOwnedSdkSandboxInterface da registrare
 
 Questo valore non può esserenull. | 
rimuovereSdkSandboxProcessDeathCallback
public void removeSdkSandboxProcessDeathCallback (SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Rimuove un valore SdkSandboxProcessDeathCallback aggiunto in precedenza utilizzando addSdkSandboxProcessDeathCallback(java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.SdkSandboxProcessDeathCallback)
| Parametri | |
|---|---|
| callback | SdkSandboxManager.SdkSandboxProcessDeathCallback: il valoreSdkSandboxProcessDeathCallbackprecedentemente aggiunto utilizzandoSdkSandboxManager#addSdkSandboxProcessDeathCallback(Executor,
     SdkSandboxProcessDeathCallback)Questo valore non può esserenull. | 
removeSyncedSharedPreferencesKey
public void removeSyncedSharedPreferencesKeys (Set<String> keys)
Rimuove le chiavi dal set di chiavi aggiunte utilizzando addSyncedSharedPreferencesKeys(java.util.Set)
 
Le chiavi rimosse verranno cancellate dalla sandbox dell'SDK se sono già state sincronizzate.
| Parametri | |
|---|---|
| keys | Set: insieme di nomi delle chiavi che non devono più essere sincronizzati con Sandbox.
 
 Questo valore non può esserenull. | 
requestSurfacePackage
public void requestSurfacePackage (String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
Invia una richiesta per un pacchetto Surface all'SDK.
Dopo che l'applicazione client ha ricevuto un segnale relativo al corretto caricamento dell'SDK e
 aggiunto SurfaceView alla gerarchia delle visualizzazioni, potrebbe richiedere in modo asincrono
 un SurfacePackage per eseguire il rendering di una vista dall'SDK.
 
Quando SurfacePackage è pronto, viene eseguito il callback OutcomeReceiver#onResult di
 verrà richiamato il metodo receiver passato. Questo callback conterrà un Bundle
 che conterrà la chiave SdkSandboxManager#EXTRA_SURFACE_PACKAGE la cui
 è il SurfacePackage richiesto.
 
L'elemento params trasmesso deve contenere le seguenti chiavi: EXTRA_WIDTH_IN_PIXELS, SdkSandboxManager#EXTRA_HEIGHT_IN_PIXELS,
 SdkSandboxManager#EXTRA_DISPLAY_ID e SdkSandboxManager#EXTRA_HOST_TOKEN. Se
 una di queste chiavi risulta mancante o non valida, verrà generato un errore IllegalArgumentException.
 
Questa API può essere chiamata solo quando il chiamante è in esecuzione in primo piano. Chiamate da
 background causerà la restituzione di RequestSurfacePackageException in receiver.
| Parametri | |
|---|---|
| sdkName | String: nome dell'SDK caricato nella sandbox dell'SDK.
 Questo valore non può esserenull. | 
| params | Bundle: i parametri trasmessi dall'applicazione client all'SDK.
 Questo valore non può esserenull. | 
| callbackExecutor | Executor: ilExecutorsu cui richiamare il callback
 Questo valore non può esserenull.
 Gli eventi di callback e listener vengono inviati tramite questoExecutor, che consente di controllare facilmente quale thread
 in uso. Per inviare eventi tramite il thread principale del tuo
 puoi utilizzareContext.getMainExecutor().
 In caso contrario, specifica un valoreExecutorche effettui l'invio a un thread appropriato. | 
| receiver | OutcomeReceiver: restituisce unBundleall'esito positivo che conterrà la chiaveSdkSandboxManager#EXTRA_SURFACE_PACKAGEcon un valoreSurfacePackage, oppureRequestSurfacePackageExceptionin caso di errore.
 Questo valore non può esserenull. | 
| Lanci | |
|---|---|
| IllegalArgumentException | se paramsnon contiene tutte le chiavi richieste. | 
startSdkSandboxActivity
public void startSdkSandboxActivity (Activity fromActivity, IBinder sdkActivityToken)
Avvia un Activity nella sandbox dell'SDK.
 
Questa funzione avvierà una nuova Activity nella stessa attività della fromActivity passata e la trasmetterà all'SDK che ha condiviso il sdkActivityToken passato che
 identifica una richiesta proveniente da quell'SDK per stabilire questo Activity.
 
Activity non verrà avviato nei seguenti casi:
 
- L'app che chiama questa API è in background.
- Il valore sdkActivityTokentrasmesso non corrisponde a una richiesta per unActivitydall'SDK che lo ha condiviso con l'app del chiamante.
- L'SDK che ha condiviso l'oggetto sdkActivityTokentrasmesso ha rimosso la sua richiesta per questo elementoActivity.
- La sandbox Activityè già stata creata.
| Parametri | |
|---|---|
| fromActivity | Activity: ilActivityverrà utilizzato per avviare la nuova sandboxActivitychiamandoActivity#startActivity(Intent).
 Questo valore non può esserenull. | 
| sdkActivityToken | IBinder: l'identificatore condiviso dall'SDK che richiedeActivity.
 
 Questo valore non può esserenull. | 
unloadSdk
public void unloadSdk (String sdkName)
Scarica un SDK caricato in precedenza dal chiamante.
Non è garantito che la memoria allocata per questo SDK venga liberata immediatamente. Tutti
 chiamate successive a requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
 per il sdkName specificato non riuscirà.
 
Questa API può essere chiamata solo quando il chiamante è in esecuzione in primo piano. Chiamate da
 uno sfondo,
verrà generato SecurityException.
| Parametri | |
|---|---|
| sdkName | String: nome dell'SDK da scaricare.
 
 Questo valore non può esserenull. | 
unregistraAppProprietàSdkSandboxInterface
public void unregisterAppOwnedSdkSandboxInterface (String name)
Annulla la registrazione di ERROR(/AppOwnedSdkSandboxInterfaces) per un processo di app.
| Parametri | |
|---|---|
| name | String: il nome con cui è stato registrato AppOwnedSdkSandboxInterface.
 
 Questo valore non può esserenull. | 
