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 |
String |
SDK_SANDBOX_SERVICE
Use com |
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 |
Métodos públicos | |
---|---|
static
int
|
getSdkSandboxState()
Retorna o estado atual do |
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 |
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
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
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
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 . |