SdkSandboxManager

public final class SdkSandboxManager
extends Object

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


Menyediakan API untuk memuat SDKs ke dalam proses sandbox SDK, lalu berinteraksi dengannya.

SdkSandbox adalah proses java yang berjalan dalam rentang uid terpisah. Setiap aplikasi memiliki proses sandbox SDK sendiri.

Aplikasi pertama harus mendeklarasikan bahwa SDKs harus ada di AndroidManifest.xml menggunakan tag <uses-sdk-library>. Aplikasi hanya dapat memuat SDKs yang bergantung pada SdkSandbox.

Catatan: Semua API yang ditentukan dalam class ini tidak stabil dan dapat berubah sewaktu-waktu.

Ringkasan

Class bertingkat

interface SdkSandboxManager.LoadSdkCallback

Callback untuk melacak peristiwa terkait pemuatan dan interaksi dengan SDK. 

interface SdkSandboxManager.RequestSurfacePackageCallback

Callback untuk melacak permintaan paket platform dari SDK. 

interface SdkSandboxManager.SendDataCallback

Callback untuk melacak pengiriman data ke SDK. 

Konstanta

int LOAD_SDK_ALREADY_LOADED

SDK sudah dimuat.

int LOAD_SDK_INTERNAL_ERROR

Terjadi error internal saat memuat SDK.

int LOAD_SDK_NOT_FOUND

SDK tidak ditemukan.

int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR

Terjadi error internal saat meminta SurfacePackage.

String SDK_SANDBOX_SERVICE

Gunakan dengan Context#getSystemService(String) untuk mengambil SdkSandboxManager guna berinteraksi dengan SDK milik aplikasi klien ini.

int SDK_SANDBOX_STATE_DISABLED

SDK Sandbox dinonaktifkan.

int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

SDK Sandbox diaktifkan.

int SEND_DATA_INTERNAL_ERROR

Error internal saat melakukan SdkSandboxManager#sendData(String, Bundle, Executor, SendDataCallback).

Metode publik

static int getSdkSandboxState()

Menampilkan status SdkSandbox saat ini.

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

Memuat SDK dalam proses java sandbox SDK.

void requestSurfacePackage(String sdkName, int displayId, int width, int height, Bundle params, Executor callbackExecutor, SdkSandboxManager.RequestSurfacePackageCallback callback)

Mengirim permintaan untuk paket platform ke SDK.

void sendData(String sdkName, Bundle data, Executor callbackExecutor, SdkSandboxManager.SendDataCallback callback)

Mengirim paket data ke SDK.

Metode turunan

Konstanta

LOAD_SDK_ALREADY_LOADED

public static final int LOAD_SDK_ALREADY_LOADED

SDK sudah dimuat.

Hal ini menunjukkan bahwa aplikasi klien mencoba memuat ulang SDK yang sama dengan memanggil loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback) setelah berhasil dimuat.

Nilai Konstanta: 101 (0x00000065)

LOAD_SDK_INTERNAL_ERROR

public static final int LOAD_SDK_INTERNAL_ERROR

Terjadi error internal saat memuat SDK.

Hal ini menunjukkan error internal generik yang terjadi saat menerapkan panggilan dari aplikasi klien.

Nilai Konstanta: 500 (0x000001f4)

LOAD_SDK_NOT_FOUND

public static final int LOAD_SDK_NOT_FOUND

SDK tidak ditemukan.

Hal ini menunjukkan bahwa aplikasi klien mencoba memuat SDK yang tidak ada dengan memanggil loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback).

Nilai Konstanta: 100 (0x00000064)

REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR

public static final int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR

Terjadi error internal saat meminta SurfacePackage.

Hal ini menunjukkan error internal generik yang terjadi saat meminta SurfacePackage.

Nilai Konstanta: 700 (0x000002bc)

SDK_SANDBOX_SERVICE

public static final String SDK_SANDBOX_SERVICE

Gunakan dengan Context#getSystemService(String) untuk mengambil SdkSandboxManager guna berinteraksi dengan SDK milik aplikasi klien ini.

Nilai Konstanta: "sdk_sandbox"

SDK_SANDBOX_STATE_DISABLED

Ditambahkan di API level 33
public static final int SDK_SANDBOX_STATE_DISABLED

SDK Sandbox dinonaktifkan.

SdkSandboxManager API disembunyikan. Upaya untuk memanggilnya akan menghasilkan UnsupportedOperationException.

Nilai Konstanta: 0 (0x00000000)

SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

Ditambahkan di API level 33
public static final int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

SDK Sandbox diaktifkan.

Aplikasi dapat menggunakan API SdkSandboxManager untuk memuat SDKs yang diperlukannya dalam proses SdkSandbox yang sesuai.

Nilai Konstanta: 2 (0x00000002)

SEND_DATA_INTERNAL_ERROR

public static final int SEND_DATA_INTERNAL_ERROR

Error internal saat melakukan SdkSandboxManager#sendData(String, Bundle, Executor, SendDataCallback).

Hal ini menunjukkan error internal umum yang terjadi saat meminta pengiriman data ke SDK.

Nilai Konstanta: 800 (0x00000320)

Metode publik

getSdkSandboxState

Ditambahkan di API level 33
public static int getSdkSandboxState ()

Menampilkan status SdkSandbox saat ini.

Hasil
int Nilai adalah SDK_SANDBOX_STATE_DISABLED, atau SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

loadSdk

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

Memuat SDK dalam proses java sandbox SDK.

Library ini memuat library SDK dengan sdkName ke proses sandbox secara asinkron, pemanggil harus diberi tahu melalui LoadSdkCallback callback.

Aplikasi harus sudah mendeklarasikan SDKs yang menjadi dependensinya di AndroidManifest menggunakan tag <use-sdk-library>. Aplikasi hanya dapat memuat SDKs yang menjadi dependensinya di SdkSandbox.

Saat aplikasi klien memuat SDK pertama, proses SdkSandbox baru akan dibuat. Jika tidak, SDK lain akan dimuat ke sandbox yang sama dengan yang sudah dibuat untuk aplikasi klien.

Parameter
sdkName String: nama SDK yang akan dimuat Nilai ini tidak boleh null.

params Bundle: parameter yang diteruskan Aplikasi ke SDK Nilai ini tidak boleh null.

callbackExecutor Executor: Executor yang akan memanggil callback Nilai ini tidak boleh null.
callback SdkSandboxManager.LoadSdkCallback: LoadSdkCallback yang akan menerima peristiwa dari pemuatan SDK Nilai ini tidak boleh berupa null.

requestSurfacePackage

public void requestSurfacePackage (String sdkName,
                int displayId,
                int width,
                int height,
                Bundle params,
                Executor callbackExecutor,
                SdkSandboxManager.RequestSurfacePackageCallback callback)

Mengirim permintaan untuk paket platform ke SDK.

Setelah aplikasi klien menerima sinyal tentang pemuatan SDK yang berhasil dengan SdkSandboxManager.LoadSdkCallback.onLoadSdkSuccess(android.os.Bundle), aplikasi tersebut kemudian dapat meminta SurfacePackage secara asinkron untuk merender tampilan dari SDK.

SurfacePackage yang diminta akan ditampilkan ke aplikasi klien melalui SdkSandboxManager.RequestSurfacePackageCallback.onSurfacePackageReady(android.view.SurfaceControlViewHost.SurfacePackage, int, android.os.Bundle).

Parameter
sdkName String: nama SDK yang dimuat ke dalam sandbox sdk Nilai ini tidak boleh null.

displayId int: ID tampilan logis untuk menampilkan paket platform

width int: lebar paket platform

height int: tinggi paket platform

params Bundle: parameter yang diteruskan aplikasi klien ke SDK Nilai ini tidak boleh null.

callbackExecutor Executor: Executor yang akan memanggil callback Nilai ini tidak boleh null.
callback SdkSandboxManager.RequestSurfacePackageCallback: RequestSurfacePackageCallback yang akan menerima hasil permintaan paket platform dari SDK. Nilai ini tidak boleh null.

sendData

public void sendData (String sdkName,
                Bundle data,
                Executor callbackExecutor,
                SdkSandboxManager.SendDataCallback callback)

Mengirim paket data ke SDK.

Setelah aplikasi klien menerima sinyal tentang pemuatan SDK yang berhasil dengan SdkSandboxManager.LoadSdkCallback.onLoadSdkSuccess(android.os.Bundle), aplikasi tersebut kemudian dapat meminta secara asinkron untuk mengirim data ke SDK dalam sandbox. Jika SDK tidak dimuat, SecurityException akan ditampilkan.

Parameter
sdkName String: nama SDK yang dimuat ke dalam sandbox SDK, nama yang sama dengan yang digunakan di loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback) Nilai ini tidak boleh null.

data Bundle: data yang akan dikirim ke SDK yang direpresentasikan dalam bentuk Bundle Nilai ini tidak boleh null.

callbackExecutor Executor: Executor yang akan memanggil callback Nilai ini tidak boleh null.
callback SdkSandboxManager.SendDataCallback: SendDataCallback yang akan menerima peristiwa dari pemuatan dan interaksi dengan SDK. SDK juga dapat mengirimkan kembali data melalui SendDataCallback#onSendDataSuccess(Bundle) Nilai ini tidak boleh null.