SdkSandboxManager

public final class SdkSandboxManager
extends Object

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


SDKs を SDK サンドボックス プロセスに読み込んで操作する API を提供します。

SdkSandbox は別の uid 範囲で動作する Java プロセスです。アプリごとに独自の SDK サンドボックス プロセスがあります。

最初のアプリは AndroidManifest.xml<uses-sdk-library> タグを使用して、依存する SDKs を宣言する必要があります。アプリは、依存する SDKs のみを SdkSandbox に読み込むことができます。

注: このクラスで定義されている API はすべて、安定版ではなく、変更される可能性があります。

概要

ネストされたクラス

interface SdkSandboxManager.LoadSdkCallback

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

SurfacePackage のリクエスト中に内部エラーが発生しました。

String SDK_SANDBOX_SERVICE

Context#getSystemService(String) とともに使用し、このクライアント アプリに属する SDK を操作する SdkSandboxManager を取得します。

int SDK_SANDBOX_STATE_DISABLED

SDK サンドボックスが無効になっています。

int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

SDK サンドボックスが有効になっています。

int SEND_DATA_INTERNAL_ERROR

SdkSandboxManager#sendData(String, Bundle, Executor, SendDataCallback) の実行中に内部エラーが発生しました。

パブリック メソッド

static int getSdkSandboxState()

SdkSandbox の現在の状態を返します。

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

SDK サンドボックスの Java プロセスで 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)

data のバンドルを SDK に送信します。

継承されるメソッド

定数

LOAD_SDK_ALREADY_LOADED

public static final int LOAD_SDK_ALREADY_LOADED

SDK はすでに読み込まれています。

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

API level 33 で追加されました。
public static final int SDK_SANDBOX_STATE_DISABLED

SDK サンドボックスが無効になっています。

SdkSandboxManager API は非公開です。呼び出そうとすると、UnsupportedOperationException が発生します。

定数値: 0 (0x00000000)

SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

API level 33 で追加されました。
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

API level 33 で追加されました。
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 サンドボックスの Java プロセスで SDK を読み込みます。

sdkName を持つ SDK ライブラリをサンドボックス プロセスに非同期で読み込みます。呼び出し元に LoadSdkCallback callback で通知する必要があります。

アプリは AndroidManifest<use-sdk-library> タグを使用し、依存する 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 の読み込み成功のシグナルを受け取ると、SurfacePackage の非同期リクエストを行って SDK からビューをレンダリングできるようになります。

リクエストされた 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: SDK に送信されるデータ。Bundle 形式で表されます。この値を null にすることはできません。

callbackExecutor Executor: コールバックを呼び出す Executor。この値を null にすることはできません。
callback SdkSandboxManager.SendDataCallback: SDK の読み込みと操作からイベントを受信する SendDataCallback。SDK が SendDataCallback#onSendDataSuccess(Bundle) を介してデータを返す場合もあります。この値を null にすることはできません。