Également disponible dans la section Extensions de services publicitaires 3
Gestionnaire de bac à sable sdk
public
final
class
SdkSandboxManager
extends Object
java.lang.Object | |
↳ | android.app.sdksandbox.SdkSandboxManager |
Fournit des API permettant de charger SDKs
dans le
du bac à sable du SDK, puis interagir avec elles.
Le bac à sable du SDK est un processus Java s'exécutant dans une plage d'UID distincte. Chaque application peut avoir son propre SDK de bac à sable.
L'application doit d'abord déclarer les SDK dont elle dépend dans son fichier manifeste à l'aide de la balise <uses-sdk-library>
. Les applications ne peuvent charger que les SDK dont elles dépendent dans le bac à sable du SDK.
Résumé
Classes imbriquées | |
---|---|
interface |
SdkSandboxManager.SdkSandboxProcessDeathCallback
Rappel pour suivre les événements de la mort du bac à sable du SDK. |
Méthodes publiques | |
---|---|
void
|
addSdkSandboxProcessDeathCallback(Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Ajout d'un rappel qui est enregistré pour les événements de cycle de vie du bac à sable du SDK, tels que le bac à sable du SDK la mort. |
void
|
addSyncedSharedPreferencesKeys(Set<String> keys)
Ajoute des clés à l'ensemble de clés en cours de synchronisation depuis le |
List<AppOwnedSdkSandboxInterface>
|
getAppOwnedSdkSandboxInterfaces()
Extrait la liste des |
List<SandboxedSdk>
|
getSandboxedSdks()
Extrait des informations sur les SDK chargés dans le bac à sable. |
static
int
|
getSdkSandboxState()
Renvoie l'état actuel de la disponibilité de la fonctionnalité de bac à sable du SDK. |
Set<String>
|
getSyncedSharedPreferencesKeys()
Renvoie les clés définies qui sont synchronisées depuis la |
void
|
loadSdk(String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
Charge le SDK dans un processus Java du bac à sable du SDK. |
void
|
registerAppOwnedSdkSandboxInterface(AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
Enregistre |
void
|
removeSdkSandboxProcessDeathCallback(SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Supprime un |
void
|
removeSyncedSharedPreferencesKeys(Set<String> keys)
Supprime les clés de l'ensemble de clés ajouté à l'aide de Les clés supprimées seront effacées du bac à sable du SDK si elles ont déjà été synchronisées. |
void
|
requestSurfacePackage(String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
Elle envoie une requête de package de surface au SDK. |
void
|
startSdkSandboxActivity(Activity fromActivity, IBinder sdkActivityToken)
Démarre une |
void
|
unloadSdk(String sdkName)
Décharge un SDK précédemment chargé par l'appelant. |
void
|
unregisterAppOwnedSdkSandboxInterface(String name)
Annule l'enregistrement de |
Méthodes héritées | |
---|---|
Constantes
EXTRA_DISPLAY_ID (ID : EXTRA_DISPLAY_ID)
public static final String EXTRA_DISPLAY_ID
Nom de la clé à utiliser dans les champs de bundle de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
. Sa valeur doit définir l'ID sous forme d'entier de l'opérateur logique
display pour afficher SurfacePackage
.
Valeur constante: "android.app.sdksandbox.extra.DISPLAY_ID"
EXTRA_HEIGHT_IN_PIXELS
public static final String EXTRA_HEIGHT_IN_PIXELS
Nom de la clé à utiliser dans les champs "Groupe" de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
. Sa valeur doit définir la hauteur entière de SurfacePackage
en pixels.
Valeur constante: "android.app.sdksandbox.extra.HEIGHT_IN_PIXELS"
EXTRA_HOST_TOKEN
public static final String EXTRA_HOST_TOKEN
Nom de la clé à utiliser dans les champs de bundle de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
. Sa valeur doit correspondre au jeton renvoyé par SurfaceView.getHostToken()
une fois que SurfaceView
a été
à la hiérarchie des vues. Seule une valeur non nulle est acceptée pour activer les rapports ANR.
Valeur constante: "android.app.sdksandbox.extra.HOST_TOKEN"
EXTRA_SURFACE_PACKAGE
public static final String EXTRA_SURFACE_PACKAGE
Nom de la clé dans le bundle transmis à la fonction onResult
de OutcomeReceiver
, qui est le champ requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
. Sa valeur présente la SurfacePackage
demandée.
Valeur constante: "android.app.sdksandbox.extra.SURFACE_PACKAGE"
EXTRA_WIDTH_IN_PIXELS
public static final String EXTRA_WIDTH_IN_PIXELS
Nom de la clé à utiliser dans les champs "Groupe" de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
. Sa valeur doit définir la largeur entière de SurfacePackage
en pixels.
Valeur constante: "android.app.sdksandbox.extra.WIDTH_IN_PIXELS"
LOAD_SDK_ALREADY_LOADED.
public static final int LOAD_SDK_ALREADY_LOADED
Le SDK est déjà chargé.
Cela indique que l'application cliente a tenté d'actualiser le même SDK en appelant loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
après avoir été
chargement réussi.
Valeur constante: 101 (0x00000065)
LOAD_SDK_INTERNAL_ERROR (Erreur interne du SDK)
public static final int LOAD_SDK_INTERNAL_ERROR
Erreur interne lors du chargement du SDK.
Cela indique qu'une erreur interne générique s'est produite lors de l'application de l'appel à partir du client application.
Valeur constante: 500 (0x000001f4)
LOAD_SDK_NOT_FOUND
public static final int LOAD_SDK_NOT_FOUND
SDK introuvable.
Cela indique que l'application cliente a tenté de charger un SDK inexistant en appelant loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
.
Valeur constante: 100 (0x00000064)
LOAD_SDK_SDK_DEFINED_ERROR
public static final int LOAD_SDK_SDK_DEFINED_ERROR
Erreur du SDK après le chargement.
Cela indique que le SDK a rencontré une erreur lors de l'initialisation après le chargement. La
Vous pouvez obtenir plus d'informations à ce sujet dans le bundle renvoyé dans LoadSdkException
jusqu'au
OutcomeReceiver
transmis à SdkSandboxManager#loadSdk
.
Valeur constante: 102 (0x00000066)
LOAD_SDK_SDK_SANDBOX_DISABLED (CHARGE_SDK_SDK_SANDBOX_DISABLED)
public static final int LOAD_SDK_SDK_SANDBOX_DISABLED
Le bac à sable du SDK est désactivé.
Cela indique que le bac à sable du SDK est désactivé. Toute tentative ultérieure de chargement des SDK ce démarrage échouera également.
Valeur constante: 103 (0x00000067)
REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
public static final int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
Une erreur interne s'est produite lors de la demande d'un SurfacePackage
.
Cela indique qu'une erreur interne générique s'est produite lors de la demande d'un
SurfacePackage
Valeur constante: 700 (0x000002bc)
REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED (demande du SDK non chargée)
Également disponible dans la section Extensions de services publicitaires 5
public static final int REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
Le SDK n'est pas chargé lorsque vous demandez un SurfacePackage
.
Cela indique que le SDK pour lequel la SurfacePackage
est demandée n'est pas
soit parce que le bac à sable est mort, soit parce qu’il n’a pas été chargé en premier lieu.
Valeur constante: 701 (0x000002bd)
SDK_SANDBOX_PROCESS_NOT_AVAILABLE
public static final int SDK_SANDBOX_PROCESS_NOT_AVAILABLE
Le processus de bac à sable du SDK n'est pas disponible.
Cela indique que le processus de bac à sable du SDK n'est pas disponible, soit parce qu'il a expiré, déconnectés ou n’a pas été créé en premier lieu.
Valeur constante: 503 (0x000001f7)
SDK_SANDBOX_SERVICE
public static final String SDK_SANDBOX_SERVICE
Utiliser avec Context#getSystemService(String)
pour récupérer un SdkSandboxManager
pour interagir avec les SDK appartenant à cette application cliente.
Valeur constante: "sdk_sandbox"
SDK_SANDBOX_STATE_DISABLED
Également disponible dans la section Extensions de services publicitaires 3
public static final int SDK_SANDBOX_STATE_DISABLED
Le bac à sable du SDK est désactivé.
SdkSandboxManager
API sont masquées. Les tentatives d'appel aboutissent à une UnsupportedOperationException
.
Valeur constante : 0 (0x00000000)
SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
Également disponible dans la section Extensions de services publicitaires 3
public static final int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
Le bac à sable du SDK est activé.
L'application peut utiliser les API SdkSandboxManager
pour charger les SDKs
dont elle dépend dans la
le processus de bac à sable du SDK correspondant.
Valeur constante: 2. (0x00000002)
Méthodes publiques
addSdkSandboxProcessDeathCallback
public void addSdkSandboxProcessDeathCallback (Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Ajout d'un rappel qui est enregistré pour les événements de cycle de vie du bac à sable du SDK, tels que le bac à sable du SDK la mort. Si le bac à sable n'a pas encore été créé lorsque cette méthode est appelée, la demande est jusqu'à ce qu'un bac à sable soit créé, auquel cas il est activé pour ce bac à sable. Multiples Des rappels peuvent être ajoutés pour détecter un décès et ne seront pas supprimés à l'arrêt du bac à sable.
Paramètres | |
---|---|
callbackExecutor |
Executor : Executor sur lequel appeler le rappel.
Cette valeur ne peut pas être null .
Les événements de rappel et d'écouteur sont envoyés via
Executor , ce qui permet de contrôler facilement le thread qui est
utilisé. Pour envoyer des événements via le thread principal de votre
vous pouvez utiliser
Context.getMainExecutor()
Sinon, fournissez un Executor qui sera envoyé à un thread approprié. |
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : SdkSandboxProcessDeathCallback qui recevra le bac à sable du SDK
des événements de cycle de vie.
Cette valeur ne peut pas être null . |
addSyncedSharedPreferencesKeys
Également disponible dans la section Extensions de services publicitaires 5
public void addSyncedSharedPreferencesKeys (Set<String> keys)
Ajoute des clés à l'ensemble de clés en cours de synchronisation depuis le SharedPreferences
par défaut de l'application vers le SDK
dans l'environnement de bac à sable.
Les SDK pourront lire les données synchronisées à l'aide de l'API SdkSandboxController.getClientSharedPreferences()
.
Pour arrêter la synchronisation d'une clé ajoutée à l'aide de cette API, utilisez removeSyncedSharedPreferencesKeys(java.util.Set)
.
La synchronisation est interrompue si l'application redémarre et que l'utilisateur doit appeler à nouveau cette API pour recréer le pool clés pour la synchronisation.
Remarque: Cette classe ne permet pas d'utiliser plusieurs processus.
Paramètres | |
---|---|
keys |
Set : ensemble de clés qui sera synchronisé avec le bac à sable.
Cette valeur ne peut pas être null . |
getAppOwnedSdkSandboxInterfaces
public List<AppOwnedSdkSandboxInterface> getAppOwnedSdkSandboxInterfaces ()
Extrait la liste des AppOwnedSdkSandboxInterface
enregistrés pour une application
Renvoie | |
---|---|
List<AppOwnedSdkSandboxInterface> |
Liste vide si appelantInfo est introuvable dans le mappage ou liste AppOwnedSdkSandboxInterface
Cette valeur ne peut pas être null . |
getSandboxedSdks
Également disponible dans la section Extensions de services publicitaires 5
public List<SandboxedSdk> getSandboxedSdks ()
Extrait des informations sur les SDK chargés dans le bac à sable.
Renvoie | |
---|---|
List<SandboxedSdk> |
Liste de SandboxedSdk contenant tous les SDK actuellement chargés.
Cette valeur ne peut pas être null . |
getSdkSandboxState
Également disponible dans la section Extensions de services publicitaires 3
public static int getSdkSandboxState ()
Renvoie l'état actuel de la disponibilité de la fonctionnalité de bac à sable du SDK.
Renvoie | |
---|---|
int |
La valeur est SDK_SANDBOX_STATE_DISABLED ou SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION |
getSyncedSharedPreferencesKeys
Également disponible dans la section Extensions de services publicitaires 5
public Set<String> getSyncedSharedPreferencesKeys ()
Renvoie les clés définies qui sont synchronisées depuis la SharedPreferences
par défaut de l'application vers
le bac à sable du SDK.
Renvoie | |
---|---|
Set<String> |
Cette valeur ne peut pas être null . |
chargeSdk
public void loadSdk (String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
Charge le SDK dans un processus Java du bac à sable du SDK.
Charge de manière asynchrone la bibliothèque du SDK avec sdkName
dans un processus de bac à sable du SDK. La
l'appelant sera averti via le receiver
.
L'appelant doit déjà déclarer SDKs
dont il dépend dans son fichier manifeste à l'aide de la balise <uses-sdk-library>
. L'appelant ne peut charger que les SDKs
dont il dépend dans le SDK
dans l'environnement de bac à sable.
Lorsque l'application cliente charge le premier SDK, un nouveau processus de bac à sable du SDK créé. Si un bac à sable a déjà été créé pour l'application cliente, des SDK supplémentaires sera chargé dans le même bac à sable.
Cette API ne peut être appelée que lorsque l'appelant s'exécute au premier plan. Appels du
en arrière-plan renverra LoadSdkException
dans receiver
.
Paramètres | |
---|---|
sdkName |
String : nom du SDK à charger.
Cette valeur ne peut pas être null . |
params |
Bundle : paramètres supplémentaires à transmettre au SDK sous la forme d'un Bundle .
comme convenu entre le client et le SDK.
Cette valeur ne peut pas être null . |
executor |
Executor : Executor sur lequel appeler le récepteur.
Cette valeur ne peut pas être null .
Les événements de rappel et d'écouteur sont envoyés via
Executor , ce qui permet de contrôler facilement le thread qui est
utilisé. Pour envoyer des événements via le thread principal de votre
vous pouvez utiliser
Context.getMainExecutor()
Sinon, fournissez un Executor qui sera envoyé à un thread approprié. |
receiver |
OutcomeReceiver : reçoit soit une SandboxedSdk lors d'une exécution réussie, soit une LoadSdkException .
Cette valeur ne peut pas être null . |
RegisterAppOwnedSdkSandboxInterface
public void registerAppOwnedSdkSandboxInterface (AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
Enregistre AppOwnedSdkSandboxInterface
pour un processus d'application.
Enregistrer un AppOwnedSdkSandboxInterface
portant le même nom qu'un précédent
l'interface enregistrée renvoie IllegalStateException
.
AppOwnedSdkSandboxInterface#getName()
fait référence au nom de l'interface.
Paramètres | |
---|---|
appOwnedSdkSandboxInterface |
AppOwnedSdkSandboxInterface : AppOwnedSdkSandboxInterface à enregistrer
Cette valeur ne peut pas être null . |
removeSdkSandboxProcessDeathCallback
public void removeSdkSandboxProcessDeathCallback (SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Supprime un SdkSandboxProcessDeathCallback
précédemment ajouté à l'aide de addSdkSandboxProcessDeathCallback(java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.SdkSandboxProcessDeathCallback)
Paramètres | |
---|---|
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : le SdkSandboxProcessDeathCallback qui a été ajouté précédemment à l'aide de
SdkSandboxManager#addSdkSandboxProcessDeathCallback(Executor,
SdkSandboxProcessDeathCallback)
Cette valeur ne peut pas être null . |
removeSyncedSharedPreferencesKeys
Également disponible dans la section Extensions de services publicitaires 5
public void removeSyncedSharedPreferencesKeys (Set<String> keys)
Supprime les clés de l'ensemble de clés ajouté à l'aide de addSyncedSharedPreferencesKeys(java.util.Set)
Les clés supprimées seront effacées du bac à sable du SDK si elles ont déjà été synchronisées.
Paramètres | |
---|---|
keys |
Set : ensemble de noms de clés à ne plus synchroniser avec le bac à sable.
Cette valeur ne peut pas être null . |
Package requestSurface
public void requestSurfacePackage (String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
Elle envoie une requête de package de surface au SDK.
Une fois que l'application cliente a reçu un signal indiquant que le SDK a bien été chargé et a
ajouté un SurfaceView
à la hiérarchie des vues, il peut demander de manière asynchrone
un SurfacePackage
pour afficher une vue à partir du SDK.
Lorsque SurfacePackage
est prêt, le rappel OutcomeReceiver#onResult
de
la receiver
transmise est appelée. Ce rappel contiendra un Bundle
qui contiendra la clé SdkSandboxManager#EXTRA_SURFACE_PACKAGE
la valeur associée est la valeur SurfacePackage
demandée.
Le params
transmis doit contenir les clés suivantes: EXTRA_WIDTH_IN_PIXELS
, SdkSandboxManager#EXTRA_HEIGHT_IN_PIXELS
,
SdkSandboxManager#EXTRA_DISPLAY_ID
et SdkSandboxManager#EXTRA_HOST_TOKEN
. Si
si l'une de ces clés est manquante ou non valide, une erreur IllegalArgumentException
est générée.
Cette API ne peut être appelée que lorsque l'appelant s'exécute au premier plan. Appels du
en arrière-plan renvoie une exception RequestSurfacePackageException dans receiver
.
Paramètres | |
---|---|
sdkName |
String : nom du SDK chargé dans le bac à sable du SDK.
Cette valeur ne peut pas être null . |
params |
Bundle : paramètres que l'application cliente transmet au SDK.
Cette valeur ne peut pas être null . |
callbackExecutor |
Executor : Executor sur lequel appeler le rappel.
Cette valeur ne peut pas être null .
Les événements de rappel et d'écouteur sont envoyés via
Executor , ce qui permet de contrôler facilement le thread qui est
utilisé. Pour envoyer des événements via le thread principal de votre
vous pouvez utiliser
Context.getMainExecutor()
Sinon, fournissez un Executor qui sera envoyé à un thread approprié. |
receiver |
OutcomeReceiver : en cas de réussite, renvoie Bundle qui contiendra la clé.
SdkSandboxManager#EXTRA_SURFACE_PACKAGE avec une valeur SurfacePackage ; ou
RequestSurfacePackageException en cas d'échec.
Cette valeur ne peut pas être null . |
Génère | |
---|---|
IllegalArgumentException |
si params ne contient pas toutes les clés requises. |
startSdkSandboxActivity
Également disponible dans la section Extensions de services publicitaires 7
public void startSdkSandboxActivity (Activity fromActivity, IBinder sdkActivityToken)
Démarre une Activity
dans le bac à sable du SDK.
Cette fonction lance un nouveau Activity
dans la même tâche de l'élément fromActivity
transmis et la transmet au SDK qui a partagé le sdkActivityToken
transmis qui
identifie une requête provenant de ce SDK pour enregistrer ce Activity
.
Activity
ne démarre pas dans les cas suivants:
- L'application qui appelle cette API s'exécute en arrière-plan.
- Le
sdkActivityToken
transmis ne correspond pas à une requête pour unActivity
. du SDK qui l'a partagé avec l'application appelante. - Le SDK qui partageait l'
sdkActivityToken
transmis a supprimé sa demande pour cet élémentActivity
- Le bac à sable
Activity
a déjà été créé.
Paramètres | |
---|---|
fromActivity |
Activity : le Activity sera utilisé pour démarrer le nouveau Activity de bac à sable en appelant Activity#startActivity(Intent) .
Cette valeur ne peut pas être null . |
sdkActivityToken |
IBinder : identifiant partagé par le SDK qui demande le Activity .
Cette valeur ne peut pas être null . |
unloadSdk
public void unloadSdk (String sdkName)
Décharge un SDK précédemment chargé par l'appelant.
Il n'est pas garanti que la mémoire allouée pour ce SDK soit libérée immédiatement. Tout
les appels suivants à requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
pour le sdkName
donné échouera.
Cette API ne peut être appelée que lorsque l'appelant s'exécute au premier plan. Appels du
arrière-plan entraînera la génération d'une SecurityException
.
Paramètres | |
---|---|
sdkName |
String : nom du SDK à décharger.
Cette valeur ne peut pas être null . |
unregisterAppOwnedSdkSandboxInterface
public void unregisterAppOwnedSdkSandboxInterface (String name)
Annule l'enregistrement de ERROR(/AppOwnedSdkSandboxInterfaces)
dans un processus d'application.
Paramètres | |
---|---|
name |
String : nom sous lequel AppOwnedSdkSandboxInterface a été enregistré.
Cette valeur ne peut pas être null . |