SdkSandboxManager
public
final
class
SdkSandboxManager
extends Object
java.lang.Object | |
↳ | android.app.sdksandbox.SdkSandboxManager |
Proporciona las API para cargar SDKs
en el proceso de la zona de pruebas del SDK y, luego, interactuar con ellas.
SdkSandbox
es un proceso de Java que se ejecuta en otro rango de UID. Cada app tiene su propio proceso de la zona de pruebas del SDK.
La primera app debe declarar SDKs
de la que depende en su AndroidManifest.xml
con la etiqueta <uses-sdk-library>
. La app solo puede cargar SDKs
de la que depende en SdkSandbox
.
Nota: Ninguna de las API definidas en esta clase es estable, y todas están sujetas a cambios.
Resumen
Clases anidadas | |
---|---|
interface |
SdkSandboxManager.LoadSdkCallback
Una devolución de llamada para realizar un seguimiento de los eventos relacionados con la carga de SDKs y la interacción con estos. |
interface |
SdkSandboxManager.RequestSurfacePackageCallback
Una devolución de llamada para realizar el seguimiento de una solicitud de un paquete de superficie desde un SDK. |
interface |
SdkSandboxManager.SendDataCallback
Una devolución de llamada para realizar un seguimiento del envío de datos a un SDK. |
Constantes | |
---|---|
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 |
REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
Se produjo un error interno cuando se solicitó |
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. |
int |
SEND_DATA_INTERNAL_ERROR
Se produjo un error interno cuando se realizaba |
Métodos públicos | |
---|---|
static
int
|
getSdkSandboxState()
Muestra el estado actual de |
void
|
loadSdk(String sdkName, Bundle params, Executor callbackExecutor, SdkSandboxManager.LoadSdkCallback callback)
Carga el SDK en el proceso de Java de la zona de pruebas del SDK. |
void
|
requestSurfacePackage(String sdkName, int displayId, int width, int height, Bundle params, Executor callbackExecutor, SdkSandboxManager.RequestSurfacePackageCallback callback)
Envía al SDK una solicitud para un paquete de superficie. |
void
|
sendData(String sdkName, Bundle data, Executor callbackExecutor, SdkSandboxManager.SendDataCallback callback)
Se envía un paquete de |
Métodos heredados | |
---|---|
Constantes
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 mediante una llamada a loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback)
después de cargarse correctamente.
Valor constante: 101 (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 desde la aplicación cliente.
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.app.sdksandbox.SdkSandboxManager.LoadSdkCallback)
.
Valor constante: 100 (0x00000064)
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)
SDK_SANDBOX_SERVICE
public static final String SDK_SANDBOX_SERVICE
Úsalo con Context#getSystemService(String)
a fin de recuperar 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 API de SdkSandboxManager
para cargar SDKs
de la que depende en el proceso SdkSandbox
correspondiente.
Valor constante: 2 (0x00000002)
SEND_DATA_INTERNAL_ERROR
public static final int SEND_DATA_INTERNAL_ERROR
Se produjo un error interno cuando se realizaba SdkSandboxManager#sendData(String, Bundle, Executor,
SendDataCallback)
.
Esto indica que se produjo un error interno genérico cuando se solicitaba el envío de datos a un SDK.
Valor constante: 800 (0x00000320)
Métodos públicos
getSdkSandboxState
public static int getSdkSandboxState ()
Muestra el estado actual de SdkSandbox
.
Resultado que se muestra | |
---|---|
int |
El valor es SDK_SANDBOX_STATE_DISABLED o SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION . |
loadSdk
public void loadSdk (String sdkName, Bundle params, Executor callbackExecutor, SdkSandboxManager.LoadSdkCallback callback)
Carga el SDK en el proceso de Java de la zona de pruebas del SDK.
De forma asíncrona, carga la biblioteca del SDK con sdkName
en un proceso de zona de pruebas. El llamador debe recibir la notificación desde LoadSdkCallback
callback
.
La app ya debe declarar SDKs
de la que depende en su AndroidManifest
con la etiqueta <use-sdk-library>
. La app solo puede cargar SDKs
de la que depende en SdkSandbox
.
Cuando la aplicación cliente cargue el primer SDK, se creará un nuevo proceso SdkSandbox
; de lo contrario, otros SDKs se cargarán en la misma zona de pruebas que ya se creó para la aplicación cliente.
Parámetros | |
---|---|
sdkName |
String : nombre del SDK que se cargará. Este valor no puede ser null . |
params |
Bundle : los parámetros que la app 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 . |
callback |
SdkSandboxManager.LoadSdkCallback : el LoadSdkCallback que recibirá los eventos de los SDK de carga.
Este valor no puede ser null . |
requestSurfacePackage
public void requestSurfacePackage (String sdkName, int displayId, int width, int height, Bundle params, Executor callbackExecutor, SdkSandboxManager.RequestSurfacePackageCallback callback)
Envía al SDK una solicitud para un paquete de superficie.
Después de que la aplicación cliente reciba un indicador sobre la carga correcta de un SDK por parte de SdkSandboxManager.LoadSdkCallback.onLoadSdkSuccess(android.os.Bundle)
, este puede solicitar, de forma asíncrona, un SurfacePackage
para renderizar la vista desde el SDK.
El SurfacePackage
solicitado se muestra a la aplicación cliente a través de SdkSandboxManager.RequestSurfacePackageCallback.onSurfacePackageReady(android.view.SurfaceControlViewHost.SurfacePackage, int, android.os.Bundle)
.
Parámetros | |
---|---|
sdkName |
String : nombre del SDK que se cargó en la zona de pruebas del SDK. Este valor no puede ser null . |
displayId |
int : el ID de la pantalla lógica para mostrar el paquete de superficie. |
width |
int : el ancho del paquete de superficie. |
height |
int : la altura del paquete de superficie. |
params |
Bundle : 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 . |
callback |
SdkSandboxManager.RequestSurfacePackageCallback : el RequestSurfacePackageCallback que recibirá los resultados de la solicitud de paquetes de superficie de los SDKs.
Este valor no puede ser null . |
sendData
public void sendData (String sdkName, Bundle data, Executor callbackExecutor, SdkSandboxManager.SendDataCallback callback)
Se envía un paquete de data
al SDK.
Después de que la aplicación cliente reciba un indicador sobre la carga correcta de un SDK por parte de SdkSandboxManager.LoadSdkCallback.onLoadSdkSuccess(android.os.Bundle)
, puede solicitar de forma asíncrona que se envíen datos al SDK en la zona de pruebas. Si no se carga el SDK, se genera SecurityException
.
Parámetros | |
---|---|
sdkName |
String : nombre del SDK que se cargó en la zona de pruebas del SDK. Este es el mismo nombre que se usa en loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback) . Este valor no puede ser null . |
data |
Bundle : los datos que se enviarán al SDK representado en forma de un Bundle . 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 .
|
callback |
SdkSandboxManager.SendDataCallback : el SendDataCallback que recibirá eventos de carga e interacción con SDK. El SDK también puede enviar datos a través de SendDataCallback#onSendDataSuccess(Bundle) .
Este valor no puede ser null . |