SdkSandboxManager
public
final
class
SdkSandboxManager
extends Object
| java.lang.Object | |
| ↳ | android.app.sdksandbox.SdkSandboxManager |
Fornece APIs para carregar SDKs na
processo de sandbox do SDK e interagir com eles.
O sandbox do SDK é um processo Java executado em um intervalo de UID separado. Cada app pode ter o próprio SDK processo de sandbox.
Primeiro, o app precisa declarar os SDKs de que depende no manifesto usando a tag <uses-sdk-library>. Os apps só podem carregar no sandbox do SDK os SDKs de que dependem.
Confira também:
Resumo
Classes aninhadas | |
|---|---|
interface |
SdkSandboxManager.SdkSandboxProcessDeathCallback
Um callback para rastrear o encerramento do sandbox do SDK de eventos. |
Métodos públicos | |
|---|---|
void
|
addSdkSandboxProcessDeathCallback(Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Adiciona um callback que é registrado para eventos de ciclo de vida do sandbox do SDK, como o sandbox do SDK da morte. |
void
|
addSyncedSharedPreferencesKeys(Set<String> keys)
Adiciona chaves ao conjunto de chaves que estão sendo sincronizadas do |
List<AppOwnedSdkSandboxInterface>
|
getAppOwnedSdkSandboxInterfaces()
Busca uma lista de |
List<SandboxedSdk>
|
getSandboxedSdks()
Busca informações sobre SDKs que são carregados no sandbox. |
static
int
|
getSdkSandboxState()
Retorna o estado atual da disponibilidade do recurso de sandbox do SDK. |
Set<String>
|
getSyncedSharedPreferencesKeys()
Retorna as chaves definidas que estão sendo sincronizadas do |
void
|
loadSdk(String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
Carrega o SDK em um processo Java do sandbox do SDK. |
void
|
registerAppOwnedSdkSandboxInterface(AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
Registra |
void
|
removeSdkSandboxProcessDeathCallback(SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Remove um |
void
|
removeSyncedSharedPreferencesKeys(Set<String> keys)
Remove chaves do conjunto de chaves que foram adicionadas usando As chaves removidas serão apagadas do sandbox do SDK se já tiverem sido sincronizadas. |
void
|
requestSurfacePackage(String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
Envia uma solicitação de um pacote de superfície ao SDK. |
void
|
startSdkSandboxActivity(Activity fromActivity, IBinder sdkActivityToken)
Inicia um |
void
|
unloadSdk(String sdkName)
Descarrega um SDK que foi carregado anteriormente pelo autor da chamada. |
void
|
unregisterAppOwnedSdkSandboxInterface(String name)
Cancela o registro de |
Métodos herdados | |
|---|---|
Constantes
ID_EXTRA_DISPLAY
public static final String EXTRA_DISPLAY_ID
O nome da chave a ser usada nos campos de pacote de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver). O valor dela precisa definir o ID de número inteiro da
para mostrar o SurfacePackage.
Valor constante: “android.app.sdksandbox.extra.DISPLAY_ID”
PIXEL DE ALTURA EXTRA
public static final String EXTRA_HEIGHT_IN_PIXELS
O nome da chave a ser usada nos campos "Bundle" de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver). O valor dela precisa definir a altura do número inteiro de SurfacePackage em pixels.
Valor constante: "android.app.sdksandbox.extra.HEIGHT_IN_PIXELS"
EXTRA_HOST_TOKEN
public static final String EXTRA_HOST_TOKEN
O nome da chave a ser usado nos campos de pacote de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver). O valor dela precisa apresentar o token retornado por SurfaceView.getHostToken() depois que o SurfaceView for
adicionados à hierarquia de visualização. Somente um valor não nulo é aceito para ativar os relatórios de ANR.
Valor constante: "android.app.sdksandbox.extra.HOST_TOKEN"
EXTRA_SURFACE_PACKAGE
public static final String EXTRA_SURFACE_PACKAGE
O nome da chave no pacote que é transmitido para a função onResult do OutcomeReceiver, que é o campo de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver). O valor dele apresenta o SurfacePackage solicitado.
Valor constante: “android.app.sdksandbox.extra.SURFACE_PACKAGE”
EXTRA_WIDTH_IN_PIXELS
public static final String EXTRA_WIDTH_IN_PIXELS
O nome da chave que será usada nos campos de pacote de requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver). O valor dela precisa definir a largura do número inteiro de SurfacePackage em pixels.
Valor constante: "android.app.sdksandbox.extra.WIDTH_IN_PIXELS"
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.os.OutcomeReceiver) depois de ser
foi carregado.
Valor 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 cliente para o aplicativo.
Valor 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.os.OutcomeReceiver).
Valor constante: 100 (0x00000064)
LOAD_SDK_SDK_DEFINED_ERROR
public static final int LOAD_SDK_SDK_DEFINED_ERROR
Ocorreu um erro do SDK após o carregamento.
Isso indica que o SDK encontrou um erro durante a inicialização pós-carregamento. A
os detalhes estão disponíveis no pacote retornado em LoadSdkException por
o OutcomeReceiver transmitido para SdkSandboxManager#loadSdk.
Valor constante: 102 (0x00000066)
LOAD_SDK_SDK_SANDBOX_DISABLED
public static final int LOAD_SDK_SDK_SANDBOX_DISABLED
O sandbox do SDK está desativado.
Isso indica que o sandbox do SDK está desativado. Qualquer tentativa subsequente de carregar SDKs em a inicialização também vai falhar.
Valor constante: 103 (0x00000067)
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 constante: 700 (0x000002bc)
REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
public static final int REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
O SDK não é carregado ao solicitar um SurfacePackage.
Isso indica que o SDK para o qual o SurfacePackage está sendo solicitado não está
carregado, seja porque a sandbox travou ou porque não foi carregada.
Valor constante: 701 (0x000002bd)
SDK_SANDBOX_PROCESS_NÃO_DISPONÍVEL
public static final int SDK_SANDBOX_PROCESS_NOT_AVAILABLE
O processo de sandbox do SDK não está disponível.
Isso indica que o processo de sandbox do SDK não está disponível, seja porque encerrou, desconectado ou que não foi criado.
Valor constante: 503 (0x000001f7)
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 a este aplicativo cliente.
Valor 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 ligar para ele resultará em 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 de sandbox do SDK correspondente.
Valor constante: 2 (0x00000002)
Métodos públicos
addSdkSandboxProcessDeathCallback
public void addSdkSandboxProcessDeathCallback (Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Adiciona um callback que é registrado para eventos de ciclo de vida do sandbox do SDK, como o sandbox do SDK da morte. Se o sandbox ainda não tiver sido criado quando este for chamado, a solicitação será é armazenado até que uma sandbox seja criada, momento em que é ativada para essa sandbox. Vários status Callbacks podem ser adicionados para detectar a morte e não serão removidos quando a sandbox for desativada.
| Parâmetros | |
|---|---|
callbackExecutor |
Executor: o Executor em que o callback é invocado
Este valor não pode ser null.
Eventos de callback e listener são enviados com esse
Executor, fornecendo uma maneira fácil de controlar qual linha de execução vai ser
usada. Para enviar eventos com a linha de execução principal do
aplicativo, use
Context.getMainExecutor().
Caso contrário, forneça um Executor que seja enviado para uma linha de execução adequada. |
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback: o SdkSandboxProcessDeathCallback que vai receber o sandbox do SDK.
eventos de ciclo de vida.
Esse valor não pode ser null. |
addSyncedSharedPreferencesKeys
public void addSyncedSharedPreferencesKeys (Set<String> keys)
Adiciona chaves ao conjunto de chaves que estão sendo sincronizadas do SharedPreferences padrão do app para o SDK
sandbox
Os dados sincronizados vão ficar disponíveis para que os SDKs leiam usando a API SdkSandboxController.getClientSharedPreferences().
Para interromper a sincronização de chaves adicionadas usando essa API, use removeSyncedSharedPreferencesKeys(java.util.Set).
A sincronização vai falhar se o app for reiniciado, e o usuário precisar chamar essa API novamente para recriar o pool de chaves para sincronização.
Observação: esta classe não permite o uso em vários processos.
| Parâmetros | |
|---|---|
keys |
Set: conjunto de chaves que serão sincronizadas com o sandbox.
Esse valor não pode ser null. |
getAppOwnedSdkSandboxInterfaces
public List<AppOwnedSdkSandboxInterface> getAppOwnedSdkSandboxInterfaces ()
Busca uma lista de AppOwnedSdkSandboxInterface registrados para um app
| Retorna | |
|---|---|
List<AppOwnedSdkSandboxInterface> |
lista vazia se CallInfo não for encontrada no mapa. Caso contrário, uma lista de AppOwnedSdkSandboxInterface
Esse valor não pode ser null. |
getSandboxedSdks
public List<SandboxedSdk> getSandboxedSdks ()
Busca informações sobre SDKs que são carregados no sandbox.
| Retorna | |
|---|---|
List<SandboxedSdk> |
Lista de SandboxedSdk contendo todos os SDKs carregados no momento.
Esse valor não pode ser null. |
getSdkSandboxState
public static int getSdkSandboxState ()
Retorna o estado atual da disponibilidade do recurso de sandbox do SDK.
| Retorna | |
|---|---|
int |
O valor é SDK_SANDBOX_STATE_DISABLED ou SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION |
getSyncedSharedPreferencesKeys
public Set<String> getSyncedSharedPreferencesKeys ()
Retorna as chaves definidas que estão sendo sincronizadas do SharedPreferences padrão do app para
sandbox do SDK.
| Retorna | |
|---|---|
Set<String> |
Esse valor não pode ser null. |
loadSdk
public void loadSdk (String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
Carrega o SDK em um processo Java do sandbox do SDK.
Carrega a biblioteca do SDK com sdkName para um processo de sandbox do SDK de forma assíncrona. A
autor da chamada será notificado por receiver.
O autor da chamada já precisa declarar os SDKs de que depende no manifesto usando a tag <uses-sdk-library>. O autor da chamada só pode carregar no SDK os SDKs de que depende
sandbox
Quando o aplicativo cliente carregar o primeiro SDK, um novo processo de sandbox do SDK será criados. Se um sandbox já tiver sido criado para o aplicativo cliente, SDKs adicionais serão carregados na mesma sandbox.
Essa API só pode ser chamada enquanto o autor da chamada estiver em execução em primeiro plano. Chamadas do
segundo plano vai resultar no retorno de LoadSdkException no receiver.
| Parâmetros | |
|---|---|
sdkName |
String: nome do SDK a ser carregado.
Esse valor não pode ser null. |
params |
Bundle: outros parâmetros que vão ser transmitidos ao SDK na forma de um Bundle.
conforme acordado entre o cliente e o SDK.
Esse valor não pode ser null. |
executor |
Executor: o Executor em que o receptor será invocado.
Esse valor não pode ser null.
Eventos de callback e listener são enviados com esse
Executor, fornecendo uma maneira fácil de controlar qual linha de execução vai ser
usada. Para enviar eventos com a linha de execução principal do
aplicativo, use
Context.getMainExecutor().
Caso contrário, forneça um Executor que seja enviado para uma linha de execução adequada. |
receiver |
OutcomeReceiver: recebe um SandboxedSdk em uma execução bem-sucedida ou LoadSdkException.
Esse valor não pode ser null. |
registerAppOwnedSdkSandboxInterface
public void registerAppOwnedSdkSandboxInterface (AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
Registra AppOwnedSdkSandboxInterface em um processo de app.
Registrar um AppOwnedSdkSandboxInterface que tem o mesmo nome de um
interface registrada resultará em IllegalStateException.
AppOwnedSdkSandboxInterface#getName() refere-se ao nome da interface.
| Parâmetros | |
|---|---|
appOwnedSdkSandboxInterface |
AppOwnedSdkSandboxInterface: a AppOwnedSdkSandboxInterface a ser registrada.
Esse valor não pode ser null. |
removeSdkSandboxProcessDeathCallback.
public void removeSdkSandboxProcessDeathCallback (SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Remove um SdkSandboxProcessDeathCallback que foi adicionado anteriormente usando addSdkSandboxProcessDeathCallback(java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.SdkSandboxProcessDeathCallback).
| Parâmetros | |
|---|---|
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback: o SdkSandboxProcessDeathCallback que foi adicionado anteriormente usando
SdkSandboxManager#addSdkSandboxProcessDeathCallback(Executor,
SdkSandboxProcessDeathCallback)
Esse valor não pode ser null. |
removeSyncedSharedPreferencesKeys
public void removeSyncedSharedPreferencesKeys (Set<String> keys)
Remove chaves do conjunto de chaves que foram adicionadas usando addSyncedSharedPreferencesKeys(java.util.Set)
As chaves removidas serão apagadas do sandbox do SDK se já tiverem sido sincronizadas.
| Parâmetros | |
|---|---|
keys |
Set: conjunto de nomes de chaves que não vão mais ser sincronizados com o sandbox.
Esse valor não pode ser null. |
requestSurfacePackage
public void requestSurfacePackage (String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
Envia uma solicitação de um pacote de superfície ao SDK.
Depois que o aplicativo cliente receber um indicador sobre um carregamento do SDK bem-sucedido e tiver
adicionou um SurfaceView à hierarquia de visualização, ele pode solicitar de forma assíncrona.
um SurfacePackage para renderizar uma visualização do SDK.
Quando o SurfacePackage estiver pronto, o callback OutcomeReceiver#onResult do
o receiver transmitido será invocado. Esse callback vai conter um Bundle.
objeto, que conterá a chave SdkSandboxManager#EXTRA_SURFACE_PACKAGE cujo
o valor associado é o SurfacePackage solicitado.
O params transmitido precisa conter as seguintes chaves: EXTRA_WIDTH_IN_PIXELS, SdkSandboxManager#EXTRA_HEIGHT_IN_PIXELS,
SdkSandboxManager#EXTRA_DISPLAY_ID e SdkSandboxManager#EXTRA_HOST_TOKEN. Se
qualquer uma dessas chaves estiver ausente ou inválida, uma IllegalArgumentException será gerada.
Essa API só pode ser chamada enquanto o autor da chamada estiver em execução em primeiro plano. Chamadas do
segundo plano vai resultar no retorno de RequestSurfacePackageException no receiver.
| Parâmetros | |
|---|---|
sdkName |
String: nome do SDK carregado no sandbox.
Esse valor não pode ser null. |
params |
Bundle: os parâmetros que o aplicativo cliente transmite ao SDK.
Esse valor não pode ser null. |
callbackExecutor |
Executor: o Executor em que o callback é invocado
Este valor não pode ser null.
Eventos de callback e listener são enviados com esse
Executor, fornecendo uma maneira fácil de controlar qual linha de execução vai ser
usada. Para enviar eventos com a linha de execução principal do
aplicativo, use
Context.getMainExecutor().
Caso contrário, forneça um Executor que seja enviado para uma linha de execução adequada. |
receiver |
OutcomeReceiver: retorna um Bundle em caso de sucesso, que contém a chave.
SdkSandboxManager#EXTRA_SURFACE_PACKAGE com um valor SurfacePackage ou
RequestSurfacePackageException em caso de falha.
Esse valor não pode ser null. |
| Gera | |
|---|---|
IllegalArgumentException |
se params não tiver todas as chaves necessárias. |
startSdkSandboxActivity
public void startSdkSandboxActivity (Activity fromActivity, IBinder sdkActivityToken)
Inicia um Activity no sandbox do SDK.
Essa função vai iniciar um novo Activity na mesma tarefa do fromActivity transmitido e transmiti-lo ao SDK que compartilhou o sdkActivityToken transmitido.
identifica uma solicitação desse SDK para declarar este Activity.
A Activity não será iniciada nos seguintes casos:
- O app que chama essa API está em segundo plano.
- O
sdkActivityTokentransmitido não está associado a uma solicitação deActivity. do SDK que o compartilhou com o app autor da chamada. - O SDK que compartilhou o
sdkActivityTokentransmitido removeu a solicitação para esseActivity. - O sandbox
Activityjá foi criado.
| Parâmetros | |
|---|---|
fromActivity |
Activity: o Activity será usado para iniciar o novo Activity do sandbox chamando Activity#startActivity(Intent) nele.
Esse valor não pode ser null. |
sdkActivityToken |
IBinder: o identificador compartilhado pelo SDK que solicita o Activity.
Esse valor não pode ser null. |
unloadSdk
public void unloadSdk (String sdkName)
Descarrega um SDK que foi carregado anteriormente pelo autor da chamada.
Não é possível garantir que a memória alocada para esse SDK seja liberada imediatamente. Todos
chamadas subsequentes para requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
para o sdkName fornecido vai falhar.
Essa API só pode ser chamada enquanto o autor da chamada estiver em execução em primeiro plano. Chamadas do
segundo plano resultará na geração de uma SecurityException.
| Parâmetros | |
|---|---|
sdkName |
String: nome do SDK a ser descarregado.
Esse valor não pode ser null. |
cancele o registro AppOwnedSdkSandboxInterface
public void unregisterAppOwnedSdkSandboxInterface (String name)
Cancela o registro de ERROR(/AppOwnedSdkSandboxInterfaces) em um processo de app.
| Parâmetros | |
|---|---|
name |
String: o nome em que a AppOwnedSdkSandboxInterface foi registrada.
Esse valor não pode ser null. |