SdkSandboxManager
public
final
class
SdkSandboxManager
extends Object
java.lang.Object | |
↳ | android.app.sdksandbox.SdkSandboxManager |
Proporciona APIs para cargar SDKs
en la
el proceso de la zona de pruebas del SDK y, luego, interactuar con ellos.
La zona de pruebas del SDK es un proceso de Java que se ejecuta en un rango de UID independiente. Cada app puede tener su propio SDK de zona de pruebas.
Primero, la app debe declarar los SDKs de los que depende en su manifiesto con la etiqueta <uses-sdk-library>
. Las apps solo pueden cargar los SDKs de los que dependen en la zona de pruebas del SDK.
Resumen
Clases anidadas | |
---|---|
interface |
SdkSandboxManager.SdkSandboxProcessDeathCallback
Una devolución de llamada para realizar un seguimiento de la finalización de la zona de pruebas del SDK de eventos. |
Constantes | |
---|---|
String |
EXTRA_DISPLAY_ID
El nombre de la clave que se usará en los campos Bundle de |
String |
EXTRA_HEIGHT_IN_PIXELS
Es el nombre de la clave que se usará en los campos Bundle de |
String |
EXTRA_HOST_TOKEN
El nombre de la clave que se usará en los campos Bundle de |
String |
EXTRA_SURFACE_PACKAGE
El nombre de la clave en el Bundle que se pasa a la función |
String |
EXTRA_WIDTH_IN_PIXELS
Es el nombre de la clave que se usará en los campos Bundle de |
int |
LOAD_SDK_ALREADY_LOADED
Ya se cargó el SDK. |
int |
LOAD_SDK_INTERNAL_ERROR
Se produjo un error interno durante la carga del SDK. |
int |
LOAD_SDK_NOT_FOUND
No se encontró el SDK. |
int |
LOAD_SDK_SDK_DEFINED_ERROR
Se produjo un error de SDK después de la carga. |
int |
LOAD_SDK_SDK_SANDBOX_DISABLED
La zona de pruebas del SDK está inhabilitada. |
int |
REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
Se produjo un error interno cuando se solicitó |
int |
REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
El SDK no se carga cuando se solicita un |
int |
SDK_SANDBOX_PROCESS_NOT_AVAILABLE
El proceso de la zona de pruebas del SDK no está disponible. |
String |
SDK_SANDBOX_SERVICE
Úsalo con |
int |
SDK_SANDBOX_STATE_DISABLED
La zona de pruebas del SDK está inhabilitada. |
int |
SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
La zona de pruebas del SDK está habilitada. |
Métodos públicos | |
---|---|
void
|
addSdkSandboxProcessDeathCallback(Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Agrega una devolución de llamada que se registra para los eventos del ciclo de vida de la zona de pruebas del SDK, como la zona de pruebas del SDK. muerte. |
void
|
addSyncedSharedPreferencesKeys(Set<String> keys)
Agrega claves al conjunto de claves que se sincronizan del |
List<AppOwnedSdkSandboxInterface>
|
getAppOwnedSdkSandboxInterfaces()
Recupera una lista de |
List<SandboxedSdk>
|
getSandboxedSdks()
Recupera información sobre los SDK que se cargan en la zona de pruebas. |
static
int
|
getSdkSandboxState()
Muestra el estado actual de disponibilidad de la función de zona de pruebas del SDK. |
Set<String>
|
getSyncedSharedPreferencesKeys()
Devuelve las claves configuradas que se están sincronizando del |
void
|
loadSdk(String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
Carga el SDK en un proceso de Java de la zona de pruebas del SDK. |
void
|
registerAppOwnedSdkSandboxInterface(AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
Registra |
void
|
removeSdkSandboxProcessDeathCallback(SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Quita un |
void
|
removeSyncedSharedPreferencesKeys(Set<String> keys)
Quita las claves del conjunto de claves que se agregaron con Si ya se sincronizaron, se borrarán las claves quitadas de la zona de pruebas del SDK. |
void
|
requestSurfacePackage(String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
Envía una solicitud de paquete de superficie al SDK. |
void
|
startSdkSandboxActivity(Activity fromActivity, IBinder sdkActivityToken)
Inicia un |
void
|
unloadSdk(String sdkName)
Descarga un SDK que el llamador cargó anteriormente. |
void
|
unregisterAppOwnedSdkSandboxInterface(String name)
Cancela el registro de |
Métodos heredados | |
---|---|
Constantes
ID DE PANTALLA EXTRA
public static final String EXTRA_DISPLAY_ID
El nombre de la clave que se usará en los campos Bundle de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
; su valor debe definir el ID de número entero de la lógica
visualización para mostrar el SurfacePackage
.
Valor constante: "android.app.sdksandbox.extra.DISPLAY_ID"
EXTRA_HEIGHT_IN_PIXELS
public static final String EXTRA_HEIGHT_IN_PIXELS
Es el nombre de la clave que se usará en los campos Bundle de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
. Su valor debe definir la altura del número entero de SurfacePackage
en píxeles.
Valor constante: "android.app.sdksandbox.extra.HEIGHT_IN_PIXELS"
ENTRADA_DE_HOST_EXTRA
public static final String EXTRA_HOST_TOKEN
El nombre de la clave que se usará en los campos Bundle de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
. Su valor debe presentar el token que muestra SurfaceView.getHostToken()
una vez que SurfaceView
se haya establecido.
agregado a la jerarquía de vistas. Solo se acepta un valor que no sea nulo para habilitar los informes de ANR.
Valor constante: "android.app.sdksandbox.extra.HOST_TOKEN"
EXTRA_SURFACE_PACKAGE
public static final String EXTRA_SURFACE_PACKAGE
El nombre de la clave en el Bundle que se pasa a la función onResult
de OutcomeReceiver
, que es el campo de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
, su valor presenta el SurfacePackage
solicitado.
Valor constante: "android.app.sdksandbox.extra.SURFACE_PACKAGE"
EXTRA_WIDTH_IN_PIXELS
public static final String EXTRA_WIDTH_IN_PIXELS
Es el nombre de la clave que se usará en los campos Bundle de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
. Su valor debe definir el ancho entero de SurfacePackage
en píxeles.
Valor constante: "android.app.sdksandbox.extra.WIDTH_IN_PIXELS"
LOAD_SDK_ALREADY_LOADED
public static final int LOAD_SDK_ALREADY_LOADED
Ya se cargó el SDK.
Esto indica que la aplicación cliente intentó volver a cargar el mismo SDK llamando a loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
después de haberse
se cargó correctamente.
Valor constante: Introducción (0x00000065)
LOAD_SDK_INTERNAL_ERROR
public static final int LOAD_SDK_INTERNAL_ERROR
Se produjo un error interno durante la carga del SDK.
Esto indica que se produjo un error interno genérico cuando se aplicaba la llamada del cliente y mantener la integridad de su aplicación.
Valor constante: 500 (0x000001f4)
LOAD_SDK_NOT_FOUND
public static final int LOAD_SDK_NOT_FOUND
No se encontró el SDK.
Esto indica que la aplicación cliente intentó cargar un SDK inexistente con una llamada a loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
.
Valor constante: 100 (0x00000064)
LOAD_SDK_SDK_DEFINED_ERROR
public static final int LOAD_SDK_SDK_DEFINED_ERROR
Se produjo un error de SDK después de la carga.
Esto indica que el SDK detectó un error durante la inicialización posterior a la carga. El
los detalles se pueden obtener del Bundle que se devuelve en LoadSdkException
mediante
el OutcomeReceiver
que se pasa a SdkSandboxManager#loadSdk
.
Valor constante: 102 (0x00000066)
SDK_LOAD_SDK_SANDBOX_DISABLED
public static final int LOAD_SDK_SDK_SANDBOX_DISABLED
La zona de pruebas del SDK está inhabilitada.
Esto indica que la zona de pruebas del SDK está inhabilitada. Cualquier intento posterior de cargar SDKs en este inicio también fallará.
Valor constante: 103 (0x00000067)
REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
public static final int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
Se produjo un error interno cuando se solicitó SurfacePackage
.
Esto indica que se produjo un error interno genérico cuando se solicitaba SurfacePackage
.
Valor constante: 700 (0x000002bc)
REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
public static final int REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
El SDK no se carga cuando se solicita un SurfacePackage
.
Esto indica que el SDK para el que se solicita el SurfacePackage
no es
ya sea porque la zona de pruebas dejó de funcionar o porque no se cargó en primer lugar.
Valor constante: 701 (0x000002bd)
SDK_SANDBOX_PROCESS_NOT_AVAILABLE
public static final int SDK_SANDBOX_PROCESS_NOT_AVAILABLE
El proceso de la zona de pruebas del SDK no está disponible.
Esto indica que el proceso de la zona de pruebas del SDK no está disponible, ya sea porque finalizó desconectado o no se creó en primer lugar.
Valor constante: 503 (0x000001f7)
SDK_SANDBOX_SERVICE
public static final String SDK_SANDBOX_SERVICE
Úsalo con Context#getSystemService(String)
para recuperar un SdkSandboxManager
.
para interactuar con los SDK que pertenecen a esta aplicación cliente.
Valor constante: "sdk_sandbox"
SDK_SANDBOX_STATE_DISABLED
public static final int SDK_SANDBOX_STATE_DISABLED
La zona de pruebas del SDK está inhabilitada.
Se ocultaron las API de SdkSandboxManager
. Los intentos de llamarlas generarán UnsupportedOperationException
.
Valor constante: 0 (0x00000000)
SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
public static final int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
La zona de pruebas del SDK está habilitada.
La app puede usar las APIs de SdkSandboxManager
para cargar SDKs
de la que depende en la
correspondiente a la zona de pruebas del SDK.
Valor constante: (2) (0x00000002)
Métodos públicos
addSdkSandboxProcessDeathCallback
public void addSdkSandboxProcessDeathCallback (Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Agrega una devolución de llamada que se registra para los eventos del ciclo de vida de la zona de pruebas del SDK, como la zona de pruebas del SDK. muerte. Si todavía no se ha creado la zona de pruebas cuando se llama a este elemento, se realizará la solicitud hasta que se crea una zona de pruebas, y en ese momento se activa para ella. Múltiples Se pueden agregar devoluciones de llamada para detectar la muerte y no se eliminarán cuando se cierre la zona de pruebas.
Parámetros | |
---|---|
callbackExecutor |
Executor : el Executor en el que se invoca la devolución de llamada. Este valor no puede ser null .
Los eventos de devolución de llamada y de objetos de escucha se envían a través de este Executor , lo que proporciona una manera fácil de controlar el subproceso que se usa. Para enviar eventos a través del subproceso principal de tu aplicación, puedes usar Context.getMainExecutor() .
De lo contrario, proporciona un Executor que se envíe a un subproceso adecuado. |
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : Es el SdkSandboxProcessDeathCallback que recibirá la zona de pruebas del SDK.
de ciclo de vida de los objetos.
Este valor no puede ser null . |
addSyncedSharedPreferencesKeys
public void addSyncedSharedPreferencesKeys (Set<String> keys)
Agrega claves al conjunto de claves que se sincronizan del SharedPreferences
predeterminado de la app al SDK.
en la zona de pruebas.
Los datos sincronizados estarán disponibles para que los SDKs los lean con la API de SdkSandboxController.getClientSharedPreferences()
.
Para detener la sincronización de cualquier clave que se agregó con esta API, usa removeSyncedSharedPreferencesKeys(java.util.Set)
.
La sincronización falla si la app se reinicia y el usuario debe volver a llamar a esta API para recompilar el grupo. de claves para la sincronización.
Nota: Esta clase no admite el uso en varios procesos.
Parámetros | |
---|---|
keys |
Set : Es el conjunto de claves que se sincronizará con la zona de pruebas.
Este valor no puede ser null . |
getAppOwnedSdkSandboxInterfaces
public List<AppOwnedSdkSandboxInterface> getAppOwnedSdkSandboxInterfaces ()
Recupera una lista de AppOwnedSdkSandboxInterface
registrados para una app
Muestra | |
---|---|
List<AppOwnedSdkSandboxInterface> |
lista vacía si callInfo no se encuentra en el mapa; de lo contrario, es una lista de AppOwnedSdkSandboxInterface
Este valor no puede ser null . |
getSandboxedSdks
public List<SandboxedSdk> getSandboxedSdks ()
Recupera información sobre los SDK que se cargan en la zona de pruebas.
Muestra | |
---|---|
List<SandboxedSdk> |
Lista de SandboxedSdk que contiene todos los SDKs cargados actualmente.
Este valor no puede ser null . |
getSdkSandboxState
public static int getSdkSandboxState ()
Muestra el estado actual de disponibilidad de la función de zona de pruebas del SDK.
Muestra | |
---|---|
int |
El valor es SDK_SANDBOX_STATE_DISABLED o SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION . |
getSyncedSharedPreferencesKeys
public Set<String> getSyncedSharedPreferencesKeys ()
Devuelve las claves configuradas que se están sincronizando del SharedPreferences
predeterminado de la app a
la zona de pruebas del SDK.
Muestra | |
---|---|
Set<String> |
Este valor no puede ser null . |
loadSdk
public void loadSdk (String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
Carga el SDK en un proceso de Java de la zona de pruebas del SDK.
Carga la biblioteca del SDK con sdkName
en un proceso de zona de pruebas del SDK de forma asíncrona. El
el emisor recibirá una notificación a través del receiver
.
El llamador ya debe declarar SDKs
de la que depende en su manifiesto con la etiqueta <uses-sdk-library>
. El llamador solo puede cargar SDKs
de la que depende en el SDK.
en la zona de pruebas.
Cuando la aplicación cliente cargue el primer SDK, se iniciará un nuevo proceso de zona de pruebas del SDK. crear. Si ya se creó una zona de pruebas para la aplicación cliente, se habilitarán SDKs adicionales se cargarán en la misma zona de pruebas.
Solo se puede llamar a esta API mientras el emisor se ejecuta en primer plano. Llamadas desde el
en segundo plano generará LoadSdkException
en receiver
.
Parámetros | |
---|---|
sdkName |
String : Es el nombre del SDK que se cargará.
Este valor no puede ser null . |
params |
Bundle : Son parámetros adicionales que se pasarán al SDK en forma de Bundle .
según lo acordado entre el cliente y el SDK.
Este valor no puede ser null . |
executor |
Executor : Es el Executor en el que se invoca al receptor.
Este valor no puede ser null .
Los eventos de devolución de llamada y de objetos de escucha se envían a través de este Executor , lo que proporciona una manera fácil de controlar el subproceso que se usa. Para enviar eventos a través del subproceso principal de tu aplicación, puedes usar Context.getMainExecutor() .
De lo contrario, proporciona un Executor que se envíe a un subproceso adecuado. |
receiver |
OutcomeReceiver : Recibe un SandboxedSdk en una ejecución correcta o LoadSdkException .
Este valor no puede ser null . |
registerAppOwnedSdkSandboxInterface
public void registerAppOwnedSdkSandboxInterface (AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
Registra AppOwnedSdkSandboxInterface
para un proceso de app.
Registrando un AppOwnedSdkSandboxInterface
que tiene el mismo nombre que un
por la interfaz registrada, se mostrará IllegalStateException
.
AppOwnedSdkSandboxInterface#getName()
hace referencia al nombre de la interfaz.
Parámetros | |
---|---|
appOwnedSdkSandboxInterface |
AppOwnedSdkSandboxInterface : Es la AppOwnedSdkSandboxInterface que se registrará.
Este valor no puede ser null . |
removeSdkSandboxProcessProcessDeathCallback
public void removeSdkSandboxProcessDeathCallback (SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Quita un SdkSandboxProcessDeathCallback
que se agregó anteriormente con addSdkSandboxProcessDeathCallback(java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.SdkSandboxProcessDeathCallback)
.
Parámetros | |
---|---|
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : Es el SdkSandboxProcessDeathCallback que se agregó antes con
SdkSandboxManager#addSdkSandboxProcessDeathCallback(Executor,
SdkSandboxProcessDeathCallback)
Este valor no puede ser null . |
removeSyncedSharedPreferencesKeys
public void removeSyncedSharedPreferencesKeys (Set<String> keys)
Quita las claves del conjunto de claves que se agregaron con addSyncedSharedPreferencesKeys(java.util.Set)
.
Si ya se sincronizaron, se borrarán las claves quitadas de la zona de pruebas del SDK.
Parámetros | |
---|---|
keys |
Set : Es un conjunto de nombres de claves que ya no deben sincronizarse con la zona de pruebas.
Este valor no puede ser null . |
requestSurfacePackage
public void requestSurfacePackage (String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
Envía una solicitud de paquete de superficie al SDK.
Después de que la aplicación cliente recibe un indicador sobre la carga correcta del SDK y
agregado un SurfaceView
a la jerarquía de vistas, puede solicitar de manera asíncrona
un SurfacePackage
para renderizar una vista desde el SDK
Cuando el SurfacePackage
esté listo, la devolución de llamada OutcomeReceiver#onResult
de
se invocará el receiver
pasado. Esta devolución de llamada contendrá un Bundle
.
que contendrá la clave SdkSandboxManager#EXTRA_SURFACE_PACKAGE
cuyo
el valor asociado es el SurfacePackage
solicitado.
El params
pasado debe contener las siguientes claves: EXTRA_WIDTH_IN_PIXELS
, SdkSandboxManager#EXTRA_HEIGHT_IN_PIXELS
,
SdkSandboxManager#EXTRA_DISPLAY_ID
y SdkSandboxManager#EXTRA_HOST_TOKEN
. Si
si falta alguna de estas claves o no es válida, se arrojará una IllegalArgumentException
.
Solo se puede llamar a esta API mientras el emisor se ejecuta en primer plano. Llamadas desde el
en segundo plano, se mostrará RequestSurfacePackageException en receiver
.
Parámetros | |
---|---|
sdkName |
String : Es el nombre del SDK que se cargó en la zona de pruebas del SDK.
Este valor no puede ser null . |
params |
Bundle : Son los parámetros que la aplicación cliente pasa al SDK.
Este valor no puede ser null . |
callbackExecutor |
Executor : el Executor en el que se invoca la devolución de llamada. Este valor no puede ser null .
Los eventos de devolución de llamada y de objetos de escucha se envían a través de este Executor , lo que proporciona una manera fácil de controlar el subproceso que se usa. Para enviar eventos a través del subproceso principal de tu aplicación, puedes usar Context.getMainExecutor() .
De lo contrario, proporciona un Executor que se envíe a un subproceso adecuado. |
receiver |
OutcomeReceiver : Muestra un Bundle en caso de éxito, que contendrá la clave.
SdkSandboxManager#EXTRA_SURFACE_PACKAGE con un valor SurfacePackage , o
RequestSurfacePackageException en caso de error.
Este valor no puede ser null . |
Arroja | |
---|---|
IllegalArgumentException |
si params no contiene todas las claves necesarias. |
startSdkSandboxActivity
public void startSdkSandboxActivity (Activity fromActivity, IBinder sdkActivityToken)
Inicia un Activity
en la zona de pruebas del SDK.
Esta función iniciará una Activity
nueva en la misma tarea de la fromActivity
que se pasó y la pasará al SDK que compartió la sdkActivityToken
pasada que
identifica una solicitud de ese SDK para establecer esta Activity
.
Activity
no comenzará en los siguientes casos:
- La app que llama a esta API está en segundo plano.
- El
sdkActivityToken
pasado no se asigna a una solicitud deActivity
del SDK que lo compartió con la app que realiza la llamada. - El SDK que compartía el
sdkActivityToken
pasado quitó su solicitudActivity
- Ya se creó la zona de pruebas
Activity
.
Parámetros | |
---|---|
fromActivity |
Activity : Se usará Activity para iniciar la nueva zona de pruebas Activity llamando a Activity#startActivity(Intent) .
Este valor no puede ser null . |
sdkActivityToken |
IBinder : Es el identificador que comparte el SDK que solicita Activity .
Este valor no puede ser null . |
descargar SDK
public void unloadSdk (String sdkName)
Descarga un SDK que el llamador cargó anteriormente.
No se garantiza que la memoria asignada a este SDK se libere de inmediato. Todo
llamadas posteriores a requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
de la sdkName
especificada fallará.
Solo se puede llamar a esta API mientras el emisor se ejecuta en primer plano. Llamadas desde el
en segundo plano, se arrojará una SecurityException
.
Parámetros | |
---|---|
sdkName |
String : Es el nombre del SDK que se descargará.
Este valor no puede ser null . |
cancelar el registro de la interfaz de la zona de pruebas de la appOwnedSdk
public void unregisterAppOwnedSdkSandboxInterface (String name)
Cancela el registro de ERROR(/AppOwnedSdkSandboxInterfaces)
para un proceso de la app.
Parámetros | |
---|---|
name |
String : Es el nombre con el que se registró AppOwnedSdkSandboxInterface.
Este valor no puede ser null . |