SdkSandboxManager
public
final
class
SdkSandboxManager
extends Object
java.lang.Object | |
↳ | android.app.sdksandbox.SdkSandboxManager |
SDK 샌드박스 프로세스에 SDKs
를 로드한 다음 이와 상호작용하는 API를 제공합니다.
SdkSandbox
는 별도의 UID 범위에서 실행되는 자바 프로세스입니다. 각 앱에는 자체 SDK 샌드박스 프로세스가 있습니다.
첫 번째 앱은 <uses-sdk-library>
태그를 사용하여 AndroidManifest.xml
에서 종속되는 SDKs
를 선언해야 합니다. 앱은 종속되는 SDKs
만 SdkSandbox
에 로드할 수 있습니다.
참고: 이 클래스에 정의된 모든 API는 불안정하며 변경될 수 있습니다.
요약
중첩된 클래스 | |
---|---|
interface |
SdkSandboxManager.LoadSdkCallback
SDK 로드 및 SDK와의 상호작용 관련 이벤트를 추적하는 콜백입니다. |
interface |
SdkSandboxManager.RequestSurfacePackageCallback
SDK에서 노출 영역 패키지 요청을 추적하는 콜백입니다. |
interface |
SdkSandboxManager.SendDataCallback
SDK로의 데이터 전송을 추적하는 콜백입니다. |
상수 | |
---|---|
int |
LOAD_SDK_ALREADY_LOADED
SDK가 이미 로드되었습니다. |
int |
LOAD_SDK_INTERNAL_ERROR
SDK를 로드하는 동안 내부 오류가 발생했습니다. |
int |
LOAD_SDK_NOT_FOUND
SDK를 찾을 수 없습니다. |
int |
REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
|
String |
SDK_SANDBOX_SERVICE
|
int |
SDK_SANDBOX_STATE_DISABLED
SDK 샌드박스가 사용 중지되었습니다. |
int |
SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
SDK 샌드박스가 사용 설정되었습니다. |
int |
SEND_DATA_INTERNAL_ERROR
|
공개 메서드 | |
---|---|
static
int
|
getSdkSandboxState()
|
void
|
loadSdk(String sdkName, Bundle params, Executor callbackExecutor, SdkSandboxManager.LoadSdkCallback callback)
SDK 샌드박스 자바 프로세스에서 SDK를 로드합니다. |
void
|
requestSurfacePackage(String sdkName, int displayId, int width, int height, Bundle params, Executor callbackExecutor, SdkSandboxManager.RequestSurfacePackageCallback callback)
노출 영역 패키지 요청을 SDK로 전송합니다. |
void
|
sendData(String sdkName, Bundle data, Executor callbackExecutor, SdkSandboxManager.SendDataCallback callback)
|
상속된 메서드 | |
---|---|
상수
LOAD_SDK_ALREADY_LOADED
public static final int LOAD_SDK_ALREADY_LOADED
SDK가 이미 로드되었습니다.
성공적으로 로드된 후 클라이언트 애플리케이션이 loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback)
을 호출하여 동일한 SDK를 다시 로드하려고 했음을 나타냅니다.
상수 값: 101 (0x00000065)
LOAD_SDK_INTERNAL_ERROR
public static final int LOAD_SDK_INTERNAL_ERROR
SDK를 로드하는 동안 내부 오류가 발생했습니다.
클라이언트 애플리케이션의 호출을 적용하는 동안 일반적인 내부 오류가 발생했음을 나타냅니다.
상수 값: 500 (0x000001f4)
LOAD_SDK_NOT_FOUND
public static final int LOAD_SDK_NOT_FOUND
SDK를 찾을 수 없습니다.
클라이언트 애플리케이션이 loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback)
을 호출하여 존재하지 않는 SDK를 로드하려고 했음을 나타냅니다.
상수 값: 100 (0x00000064)
REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
public static final int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
SurfacePackage
요청 중에 내부 오류가 발생했습니다.
SurfacePackage
를 요청하는 동안 일반적인 내부 오류가 발생했음을 나타냅니다.
상수 값: 700 (0x000002bc)
SDK_SANDBOX_SERVICE
public static final String SDK_SANDBOX_SERVICE
Context#getSystemService(String)
와 함께 사용하여 이 클라이언트 애플리케이션에 속한 SDK와 상호작용하는 SdkSandboxManager
를 가져옵니다.
상수 값: "sdk_sandbox"
SDK_SANDBOX_STATE_DISABLED
public static final int SDK_SANDBOX_STATE_DISABLED
SDK 샌드박스가 사용 중지되었습니다.
SdkSandboxManager
API를 숨겼습니다. 이를 호출하려고 하면 UnsupportedOperationException
이 발생합니다.
상수 값: 0 (0x00000000)
SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
public static final int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
SDK 샌드박스가 사용 설정되었습니다.
앱은 SdkSandboxManager
API를 사용하여 종속된 SDKs
를 상응하는 SdkSandbox
프로세스에 로드할 수 있습니다.
상수 값: 2 (0x00000002)
SEND_DATA_INTERNAL_ERROR
public static final int SEND_DATA_INTERNAL_ERROR
SdkSandboxManager#sendData(String, Bundle, Executor,
SendDataCallback)
을 실행하는 중에 내부 오류가 발생했습니다.
데이터를 SDK로 전송하도록 요청하는 동안 일반적인 내부 오류가 발생했음을 나타냅니다.
상수 값: 800 (0x00000320)
공개 메서드
getSdkSandboxState
public static int getSdkSandboxState ()
SdkSandbox
의 현재 상태를 반환합니다.
반환 값 | |
---|---|
int |
값은 SDK_SANDBOX_STATE_DISABLED 또는 SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION 입니다. |
loadSdk
public void loadSdk (String sdkName, Bundle params, Executor callbackExecutor, SdkSandboxManager.LoadSdkCallback callback)
SDK 샌드박스 자바 프로세스에서 SDK를 로드합니다.
sdkName
으로 SDK 라이브러리를 샌드박스 프로세스에 비동기식으로 로드합니다. 호출자에 LoadSdkCallback
callback
을 통해 알려야 합니다.
앱은 <use-sdk-library>
태그를 사용하여 AndroidManifest
에서 종속되는 SDKs
를 미리 선언해야 합니다. 앱은 종속되는 SDKs
만 SdkSandbox
에 로드할 수 있습니다.
클라이언트 애플리케이션이 첫 번째 SDK를 로드하면 새 SdkSandbox
프로세스가 만들어집니다. 다른 SDK는 클라이언트 애플리케이션용으로 이미 만들어진 동일한 샌드박스에 로드됩니다.
매개변수 | |
---|---|
sdkName |
String : 로드할 SDK의 이름입니다.
이 값은 null 일 수 없습니다. |
params |
Bundle : 앱이 SDK에 전달하는 매개변수입니다. 이 값은 null 일 수 없습니다. |
callbackExecutor |
Executor : 콜백을 호출할 Executor 입니다. 이 값은 null 일 수 없습니다. |
callback |
SdkSandboxManager.LoadSdkCallback : SDK를 로드하여 이벤트를 수신하는 LoadSdkCallback 입니다.
이 값은 null 일 수 없습니다. |
requestSurfacePackage
public void requestSurfacePackage (String sdkName, int displayId, int width, int height, Bundle params, Executor callbackExecutor, SdkSandboxManager.RequestSurfacePackageCallback callback)
노출 영역 패키지 요청을 SDK로 전송합니다.
클라이언트 애플리케이션이 SdkSandboxManager.LoadSdkCallback.onLoadSdkSuccess(android.os.Bundle)
을 통해 성공적인 SDK 로드에 관한 신호를 수신하면 SDK에서 뷰를 렌더링하도록 SurfacePackage
를 비동기식으로 요청할 수 있습니다.
요청된 SurfacePackage
는 SdkSandboxManager.RequestSurfacePackageCallback.onSurfacePackageReady(android.view.SurfaceControlViewHost.SurfacePackage, int, android.os.Bundle)
을 통해 클라이언트 애플리케이션에 반환됩니다.
매개변수 | |
---|---|
sdkName |
String : SDK 샌드박스에 로드된 SDK의 이름입니다. 이 값은 null 일 수 없습니다. |
displayId |
int : 노출 영역 패키지를 표시할 논리 디스플레이의 ID입니다. |
width |
int : 노출 영역 패키지의 너비입니다. |
height |
int : 노출 영역 패키지의 높이입니다. |
params |
Bundle : 클라이언트 애플리케이션이 SDK에 전달하는 매개변수입니다.
이 값은 null 일 수 없습니다. |
callbackExecutor |
Executor : 콜백을 호출할 Executor 입니다. 이 값은 null 일 수 없습니다. |
callback |
SdkSandboxManager.RequestSurfacePackageCallback : SDK에서 노출 영역 패키지를 요청한 결과를 수신하는 RequestSurfacePackageCallback 입니다.
이 값은 null 일 수 없습니다. |
sendData
public void sendData (String sdkName, Bundle data, Executor callbackExecutor, SdkSandboxManager.SendDataCallback callback)
data
번들을 SDK로 전송합니다.
클라이언트 애플리케이션이 SdkSandboxManager.LoadSdkCallback.onLoadSdkSuccess(android.os.Bundle)
을 통해 SDK 로드 성공을 알리는 신호를 수신하면 샌드박스의 SDK에 데이터를 전송하도록 비동기식으로 요청할 수 있습니다. SDK가 로드되지 않으면 SecurityException
이 발생합니다.
매개변수 | |
---|---|
sdkName |
String : SDK 샌드박스에 로드된 SDK의 이름으로, loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback) 에서 사용하는 것과 같은 이름입니다. 이 값은 null 일 수 없습니다. |
data |
Bundle : Bundle 형식으로 표시되는 데이터로, 이 데이터는 SDK로 전송됩니다. 이 값은 null 일 수 없습니다. |
callbackExecutor |
Executor : 콜백을 호출할 Executor 입니다. 이 값은 null 일 수 없습니다.
|
callback |
SdkSandboxManager.SendDataCallback : SDK 로드 및 SDK와의 상호작용에서 발생하는 이벤트를 수신하는 SendDataCallback 입니다. SDK는 SendDataCallback#onSendDataSuccess(Bundle) 을 통해 데이터를 다시 전송할 수도 있습니다. 이 값은 null 일 수 없습니다. |