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
|
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 サンドボックスの 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)
|
継承されるメソッド | |
---|---|
定数
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
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 サンドボックスの 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 にすることはできません。 |