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
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
sdkActivityToken
transmitido 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
sdkActivityToken
transmitido removeu a solicitação para esseActivity
. - O sandbox
Activity
já 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 . |