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 |
String |
SDK_SANDBOX_SERVICE
Gunakan dengan |
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 |
Metode publik | |
---|---|
static
int
|
getSdkSandboxState()
Menampilkan status |
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 |
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
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
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
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 . |