SdkSandboxManager

public final class SdkSandboxManager
extends Object

java.lang.Object
   ↳ android.app.sdksandbox.SdkSandboxManager


Fornece APIs para carregar SDKs no processo de sandbox do SDK e interagir com eles.

SdkSandbox é um processo Java executado em um intervalo de UID separado. Cada app tem o próprio processo de sandbox do SDK.

Primeiro, o app precisa declarar os SDKs de que ele depende em AndroidManifest.xml usando a tag <uses-sdk-library>. O app só pode carregar SDKs de acordo com o SdkSandbox.

Observação: todas as APIs definidas nesta classe não são estáveis e estão sujeitas a mudanças.

Resumo

Classes aninhadas

interface SdkSandboxManager.LoadSdkCallback

Um callback para acompanhar eventos relacionados ao carregamento e à interação com SDKs. 

interface SdkSandboxManager.RequestSurfacePackageCallback

Um callback para rastrear uma solicitação de um pacote de superfície de um SDK. 

interface SdkSandboxManager.SendDataCallback

Um callback para acompanhar o envio de dados a um SDK. 

Constantes

int LOAD_SDK_ALREADY_LOADED

O SDK já está carregado.

int LOAD_SDK_INTERNAL_ERROR

Erro interno ao carregar o SDK.

int LOAD_SDK_NOT_FOUND

O SDK não foi encontrado.

int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR

Erro interno ao solicitar um SurfacePackage.

String SDK_SANDBOX_SERVICE

Use com Context#getSystemService(String) para extrair um SdkSandboxManager para interagir com os SDKs que pertencem ao aplicativo cliente.

int SDK_SANDBOX_STATE_DISABLED

O sandbox do SDK está desativado.

int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

O sandbox do SDK está ativado.

int SEND_DATA_INTERNAL_ERROR

Erro interno ao executar SdkSandboxManager#sendData(String, Bundle, Executor, SendDataCallback).

Métodos públicos

static int getSdkSandboxState()

Retorna o estado atual do SdkSandbox.

void loadSdk(String sdkName, Bundle params, Executor callbackExecutor, SdkSandboxManager.LoadSdkCallback callback)

Carrega o SDK em um processo Java do sandbox do SDK.

void requestSurfacePackage(String sdkName, int displayId, int width, int height, Bundle params, Executor callbackExecutor, SdkSandboxManager.RequestSurfacePackageCallback callback)

Envia a solicitação de um pacote de superfície ao SDK.

void sendData(String sdkName, Bundle data, Executor callbackExecutor, SdkSandboxManager.SendDataCallback callback)

Envia um pacote de data ao SDK.

Métodos herdados

Constantes

LOAD_SDK_ALREADY_LOADED

public static final int LOAD_SDK_ALREADY_LOADED

O SDK já está carregado.

Isso indica que o aplicativo cliente tentou recarregar o mesmo SDK chamando loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback) depois de ser carregado.

Valor da constante: 101 (0x00000065)

LOAD_SDK_INTERNAL_ERROR

public static final int LOAD_SDK_INTERNAL_ERROR

Erro interno ao carregar o SDK.

Isso indica que ocorreu um erro interno genérico ao aplicar a chamada do aplicativo cliente.

Valor da constante: 500 (0x000001f4)

LOAD_SDK_NOT_FOUND

public static final int LOAD_SDK_NOT_FOUND

O SDK não foi encontrado.

Isso indica que o aplicativo cliente tentou carregar um SDK que não existe chamando loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback).

Valor da constante: 100 (0x00000064)

REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR

public static final int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR

Erro interno ao solicitar um SurfacePackage.

Isso indica que ocorreu um erro interno genérico ao solicitar um SurfacePackage.

Valor da constante: 700 (0x000002bc)

SDK_SANDBOX_SERVICE

public static final String SDK_SANDBOX_SERVICE

Use com Context#getSystemService(String) para extrair um SdkSandboxManager para interagir com os SDKs que pertencem ao aplicativo cliente.

Valor da constante: "sdk_sandbox"

SDK_SANDBOX_STATE_DISABLED

Adicionado no nível 33 da API.
public static final int SDK_SANDBOX_STATE_DISABLED

O sandbox do SDK está desativado.

As APIs SdkSandboxManager estão ocultas. Qualquer tentativa de fazer uma chamada vai resultar em uma UnsupportedOperationException.

Valor da constante: 0 (0x00000000)

SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

Adicionado no nível 33 da API.
public static final int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

O sandbox do SDK está ativado.

O app pode usar APIs SdkSandboxManager para carregar os SDKs de que depende no processo SdkSandbox correspondente.

Valor da constante: 2 (0x00000002)

SEND_DATA_INTERNAL_ERROR

public static final int SEND_DATA_INTERNAL_ERROR

Erro interno ao executar SdkSandboxManager#sendData(String, Bundle, Executor, SendDataCallback).

Isso indica que ocorreu um erro interno genérico ao solicitar o envio de dados a um SDK.

Valor da constante: 800 (0x00000320)

Métodos públicos

getSdkSandboxState

Adicionado no nível 33 da API.
public static int getSdkSandboxState ()

Retorna o estado atual do SdkSandbox.

Retorna
int O valor é SDK_SANDBOX_STATE_DISABLED ou SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

loadSdk

public void loadSdk (String sdkName,
                Bundle params,
                Executor callbackExecutor,
                SdkSandboxManager.LoadSdkCallback callback)

Carrega o SDK em um processo Java do sandbox do SDK.

Carrega a biblioteca do SDK com sdkName para um processo de sandbox de forma assíncrona. O autor da chamada precisa ser notificado pelo callback LoadSdkCallback.

O app já precisa declarar os SDKs de que depende no AndroidManifest usando a tag <use-sdk-library>. O app só pode carregar os SDKs de que depende no SdkSandbox.

Quando o aplicativo cliente carregar o primeiro SDK, um novo processo SdkSandbox vai ser criado. Caso contrário, outros SDKs vão ser carregados no mesmo sandbox que já foi criado para o aplicativo cliente.

Parâmetros
sdkName String: nome do SDK a ser carregado Este valor não pode ser null.

params Bundle: os parâmetros que o app transmite ao SDK Este valor não pode ser null.

callbackExecutor Executor: o Executor em que o callback é invocado Este valor não pode ser null.
callback SdkSandboxManager.LoadSdkCallback: o LoadSdkCallback que vai receber eventos de carregamento de SDKs Este valor não pode ser null.

requestSurfacePackage

public void requestSurfacePackage (String sdkName,
                int displayId,
                int width,
                int height,
                Bundle params,
                Executor callbackExecutor,
                SdkSandboxManager.RequestSurfacePackageCallback callback)

Envia a solicitação de um pacote de superfície ao SDK.

Depois que o aplicativo cliente receber um indicador sobre um carregamento do SDK por SdkSandboxManager.LoadSdkCallback.onLoadSdkSuccess(android.os.Bundle), ele vai poder solicitar de forma assíncrona um SurfacePackage para renderizar a visualização do SDK.

O SurfacePackage solicitado é retornado ao aplicativo cliente por SdkSandboxManager.RequestSurfacePackageCallback.onSurfacePackageReady(android.view.SurfaceControlViewHost.SurfacePackage, int, android.os.Bundle).

Parâmetros
sdkName String: nome do SDK carregado no sandbox do SDK Este valor não pode ser null.

displayId int: o ID da tela lógica para exibir o pacote de superfície.

width int: a largura do pacote de superfície

height int: a altura do pacote de superfície

params Bundle: os parâmetros que o aplicativo cliente transmite ao SDK Este valor não pode ser null.

callbackExecutor Executor: o Executor em que o callback é invocado Este valor não pode ser null.
callback SdkSandboxManager.RequestSurfacePackageCallback: o RequestSurfacePackageCallback que vai receber os resultados da solicitação de pacotes de superfície de SDKs. Esse valor não pode ser null.

sendData

public void sendData (String sdkName,
                Bundle data,
                Executor callbackExecutor,
                SdkSandboxManager.SendDataCallback callback)

Envia um pacote de data ao SDK.

Depois que o aplicativo cliente receber um indicador sobre um carregamento do SDK por SdkSandboxManager.LoadSdkCallback.onLoadSdkSuccess(android.os.Bundle), ele vai poder solicitar de maneira assíncrona o envio de todos os dados para o SDK no sandbox. Se o SDK não for carregado, uma SecurityException vai ser gerada.

Parâmetros
sdkName String: nome do SDK a ser carregado no sandbox, o mesmo nome usado em loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback) Esse valor não pode ser null.

data Bundle: os dados a serem enviados ao SDK representados na forma de um Bundle Esse valor não pode ser null.

callbackExecutor Executor: o Executor em que o callback é invocado Este valor não pode ser null.
callback SdkSandboxManager.SendDataCallback: o SendDataCallback que vai receber eventos de carregamento e de interação com SDKs. O SDK também pode enviar dados de volta usando SendDataCallback#onSendDataSuccess(Bundle) Este valor não pode ser null.