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.
Sandbox SDK adalah proses java yang berjalan dalam rentang uid terpisah. Setiap aplikasi mungkin memiliki proses sandbox SDK-nya sendiri.
Aplikasi harus terlebih dahulu mendeklarasikan SDK yang menjadi dependensinya dalam manifesnya menggunakan tag <uses-sdk-library>
. Aplikasi hanya dapat memuat SDK yang menjadi dependensinya ke dalam sandbox SDK.
Ringkasan
Class bertingkat | |
---|---|
interface |
SdkSandboxManager.SdkSandboxProcessDeathCallback
Callback untuk melacak penghentian sandbox SDK peristiwa. |
Metode publik | |
---|---|
void
|
addSdkSandboxProcessDeathCallback(Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Menambahkan callback yang terdaftar untuk peristiwa siklus proses sandbox SDK, seperti penghentian sandbox SDK. |
void
|
addSyncedSharedPreferencesKeys(Set<String> keys)
Menambahkan kunci ke kumpulan kunci yang disinkronkan dari |
List<AppOwnedSdkSandboxInterface>
|
getAppOwnedSdkSandboxInterfaces()
Mengambil daftar |
List<SandboxedSdk>
|
getSandboxedSdks()
Mengambil informasi tentang SDK yang dimuat di sandbox. |
static
int
|
getSdkSandboxState()
Menampilkan status ketersediaan fitur sandbox SDK saat ini. |
Set<String>
|
getSyncedSharedPreferencesKeys()
Menampilkan kunci kumpulan yang disinkronkan dari |
void
|
loadSdk(String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
Memuat SDK dalam proses java sandbox SDK. |
void
|
registerAppOwnedSdkSandboxInterface(AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
Mendaftarkan |
void
|
removeSdkSandboxProcessDeathCallback(SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Menghapus |
void
|
removeSyncedSharedPreferencesKeys(Set<String> keys)
Menghapus kunci dari kumpulan kunci yang telah ditambahkan menggunakan Kunci yang dihapus akan dihapus dari sandbox SDK jika sudah disinkronkan. |
void
|
requestSurfacePackage(String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
Mengirim permintaan untuk paket platform ke SDK. |
void
|
startSdkSandboxActivity(Activity fromActivity, IBinder sdkActivityToken)
Memulai |
void
|
unloadSdk(String sdkName)
Menghapus pemuatan SDK yang sebelumnya telah dimuat oleh pemanggil. |
void
|
unregisterAppOwnedSdkSandboxInterface(String name)
Membatalkan pendaftaran |
Metode turunan | |
---|---|
Konstanta
{i>EXTRA_DISPLAY_ID<i}
public static final String EXTRA_DISPLAY_ID
Nama kunci yang akan digunakan dalam kolom Paket requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
, nilainya harus menentukan ID bilangan bulat dari tampilan logis untuk menampilkan SurfacePackage
.
Nilai Konstanta: "android.app.sdksandbox.extra.DISPLAY_ID"
PIXEL_TINGGI_EKSTRA
public static final String EXTRA_HEIGHT_IN_PIXELS
Nama kunci yang akan digunakan dalam kolom Paket requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
, nilainya harus menentukan tinggi bilangan bulat SurfacePackage
dalam piksel.
Nilai Konstanta: "android.app.sdksandbox.extra.HEIGHT_IN_PIXELS"
EXTRA_HOST_TOKEN
public static final String EXTRA_HOST_TOKEN
Nama kunci yang akan digunakan di kolom Paket requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
, nilainya harus menampilkan token yang ditampilkan oleh SurfaceView.getHostToken()
setelah SurfaceView
ditambahkan ke hierarki tampilan. Hanya nilai non-null yang diterima untuk mengaktifkan pelaporan ANR.
Nilai Konstanta: "android.app.sdksandbox.extra.HOST_TOKEN"
EXTRA_SURFACE_PACKAGE
public static final String EXTRA_SURFACE_PACKAGE
Nama kunci dalam Paket yang diteruskan ke fungsi onResult
dari OutcomeReceiver
yang merupakan kolom requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
, nilainya menyajikan SurfacePackage
yang diminta.
Nilai Konstanta: "android.app.sdksandbox.extra.SURFACE_PACKAGE"
PIXEL EKSTRA_WIDTH_IN_PIXEL
public static final String EXTRA_WIDTH_IN_PIXELS
Nama kunci yang akan digunakan dalam kolom Paket requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
, nilainya harus menentukan lebar bilangan bulat SurfacePackage
dalam piksel.
Nilai Konstanta: "android.app.sdksandbox.extra.WIDTH_IN_PIXELS"
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.os.OutcomeReceiver)
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 umum 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.os.OutcomeReceiver)
.
Nilai Konstanta: 100 (0x00000064)
LOAD_SDK_SDK_DEFINED_ERROR
public static final int LOAD_SDK_SDK_DEFINED_ERROR
Error SDK setelah dimuat.
Hal ini menunjukkan bahwa SDK mengalami error selama inisialisasi pascapemuatan. Detail hal ini dapat diperoleh dari Paket yang ditampilkan di LoadSdkException
melalui OutcomeReceiver
yang diteruskan ke SdkSandboxManager#loadSdk
.
Nilai Konstanta: 102 (0x00000066)
LOAD_SDK_SDK_SANDBOX_DISABLED
public static final int LOAD_SDK_SDK_SANDBOX_DISABLED
Sandbox SDK dinonaktifkan.
Hal ini menunjukkan bahwa sandbox SDK dinonaktifkan. Setiap upaya selanjutnya untuk memuat SDK dalam booting ini juga akan gagal.
Nilai Konstanta: 103 (0x00000067)
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)
REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
public static final int REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
SDK tidak dimuat saat meminta SurfacePackage
.
Hal ini menunjukkan bahwa SDK yang diminta untuk SurfacePackage
tidak
dimuat, baik karena sandbox telah mati atau karena tidak dimuat sejak awal.
Nilai Konstanta: 701 (0x000002bd)
SDK_SANDBOX_PROCESS_NOT_AVAILABLE
public static final int SDK_SANDBOX_PROCESS_NOT_AVAILABLE
Proses sandbox SDK tidak tersedia.
Hal ini menunjukkan bahwa proses sandbox SDK tidak tersedia, baik karena telah mati, terputus, atau tidak dibuat sejak awal.
Nilai Konstanta: 503 (0x000001f7)
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
Sandbox SDK 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
Sandbox SDK diaktifkan.
Aplikasi dapat menggunakan SdkSandboxManager
API untuk memuat SDKs
yang menjadi dependensinya
dalam proses sandbox SDK yang sesuai.
Nilai Konstanta: 2 (0x00000002)
Metode publik
addSdkSandboxProcessDeathCallback
public void addSdkSandboxProcessDeathCallback (Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Menambahkan callback yang terdaftar untuk peristiwa siklus proses sandbox SDK, seperti penghentian sandbox SDK. Jika sandbox belum dibuat saat fungsi ini dipanggil, permintaan akan disimpan hingga sandbox dibuat, dan pada saat itu sandbox tersebut diaktifkan. Beberapa callback dapat ditambahkan untuk mendeteksi penghentian dan tidak akan dihapus saat sandbox berhenti.
Parameter | |
---|---|
callbackExecutor |
Executor : Executor yang akan memanggil callback
Nilai ini tidak boleh null .
Peristiwa callback dan pemroses dikirim melalui Executor ini
, yang menyediakan cara mudah untuk mengontrol thread yang
digunakan. Untuk mengirim peristiwa melalui thread utama
aplikasi, Anda dapat menggunakan
Context.getMainExecutor() .
Jika tidak, berikan Executor yang dikirimkan ke thread yang sesuai. |
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : SdkSandboxProcessDeathCallback yang akan menerima peristiwa siklus proses sandbox SDK.
Nilai ini tidak boleh null . |
addSyncedSharedPreferencesKeys
public void addSyncedSharedPreferencesKeys (Set<String> keys)
Menambahkan kunci ke kumpulan kunci yang disinkronkan dari SharedPreferences
default aplikasi ke sandbox SDK.
Data yang disinkronkan akan tersedia untuk dibaca SDK menggunakan SdkSandboxController.getClientSharedPreferences()
API.
Untuk berhenti menyinkronkan kunci apa pun yang telah ditambahkan menggunakan API ini, gunakan removeSyncedSharedPreferencesKeys(java.util.Set)
.
Sinkronisasi akan terganggu jika aplikasi dimulai ulang dan pengguna harus memanggil API ini lagi untuk membangun ulang kumpulan kunci untuk sinkronisasi.
Catatan: Class ini tidak mendukung penggunaan di beberapa proses.
Parameter | |
---|---|
keys |
Set : kumpulan kunci yang akan disinkronkan ke Sandbox.
Nilai ini tidak boleh null . |
getAppDimilikiSdkSandboxInterfaces
public List<AppOwnedSdkSandboxInterface> getAppOwnedSdkSandboxInterfaces ()
Mengambil daftar AppOwnedSdkSandboxInterface
yang terdaftar untuk aplikasi
Return | |
---|---|
List<AppOwnedSdkSandboxInterface> |
daftar kosong jika CallsInfo tidak ditemukan di peta jika tidak, daftar AppOwnedSdkSandboxInterface
Nilai ini tidak boleh null . |
getSandboxedSdks
public List<SandboxedSdk> getSandboxedSdks ()
Mengambil informasi tentang SDK yang dimuat di sandbox.
Return | |
---|---|
List<SandboxedSdk> |
Daftar SandboxedSdk yang berisi semua SDK yang saat ini dimuat.
Nilai ini tidak boleh null . |
getSdkSandboxState
public static int getSdkSandboxState ()
Menampilkan status ketersediaan fitur sandbox SDK saat ini.
Return | |
---|---|
int |
Nilai adalah SDK_SANDBOX_STATE_DISABLED , atau SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION |
getSyncedSharedPreferencesKeys
public Set<String> getSyncedSharedPreferencesKeys ()
Menampilkan kunci kumpulan yang disinkronkan dari SharedPreferences
default aplikasi ke
sandbox SDK.
Return | |
---|---|
Set<String> |
Nilai ini tidak boleh null . |
loadSdk
public void loadSdk (String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
Memuat SDK dalam proses java sandbox SDK.
Memuat library SDK dengan sdkName
ke proses sandbox SDK secara asinkron. Penelepon akan diberi tahu melalui receiver
.
Pemanggil harus sudah mendeklarasikan SDKs
yang menjadi dependensinya dalam manifesnya menggunakan tag <uses-sdk-library>
. Pemanggil hanya dapat memuat SDKs
yang bergantung pada sandbox SDK.
Saat aplikasi klien memuat SDK pertama, proses sandbox SDK baru akan dibuat. Jika sandbox telah dibuat untuk aplikasi klien, SDK tambahan akan dimuat ke dalam sandbox yang sama.
API ini hanya dapat dipanggil saat pemanggil berjalan di latar depan. Panggilan dari
latar belakang akan menghasilkan LoadSdkException
yang ditampilkan dalam receiver
.
Parameter | |
---|---|
sdkName |
String : nama SDK yang akan dimuat.
Nilai ini tidak boleh null . |
params |
Bundle : parameter tambahan yang akan diteruskan ke SDK dalam bentuk Bundle seperti yang disepakati antara klien dan SDK.
Nilai ini tidak boleh null . |
executor |
Executor : Executor yang akan memanggil penerima.
Nilai ini tidak boleh null .
Peristiwa callback dan pemroses dikirim melalui Executor ini
, yang menyediakan cara mudah untuk mengontrol thread yang
digunakan. Untuk mengirim peristiwa melalui thread utama
aplikasi, Anda dapat menggunakan
Context.getMainExecutor() .
Jika tidak, berikan Executor yang dikirimkan ke thread yang sesuai. |
receiver |
OutcomeReceiver : Metode ini akan menerima SandboxedSdk saat berhasil dijalankan, atau LoadSdkException .
Nilai ini tidak boleh null . |
registerAppDimilikiSdkSandboxInterface
public void registerAppOwnedSdkSandboxInterface (AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
Mendaftarkan AppOwnedSdkSandboxInterface
untuk proses aplikasi.
Mendaftarkan AppOwnedSdkSandboxInterface
yang memiliki nama yang sama dengan antarmuka yang telah terdaftar sebelumnya akan menghasilkan IllegalStateException
.
AppOwnedSdkSandboxInterface#getName()
mengacu pada nama antarmuka.
Parameter | |
---|---|
appOwnedSdkSandboxInterface |
AppOwnedSdkSandboxInterface : AppDimilikiSdkSandboxInterface yang akan didaftarkan
Nilai ini tidak boleh null . |
removeSdkSandboxProcessDeathCallback
public void removeSdkSandboxProcessDeathCallback (SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Menghapus SdkSandboxProcessDeathCallback
yang sebelumnya ditambahkan menggunakan addSdkSandboxProcessDeathCallback(java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.SdkSandboxProcessDeathCallback)
Parameter | |
---|---|
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : SdkSandboxProcessDeathCallback yang sebelumnya ditambahkan menggunakan
SdkSandboxManager#addSdkSandboxProcessDeathCallback(Executor,
SdkSandboxProcessDeathCallback)
Nilai ini tidak boleh null . |
removeSyncedSharedPreferencesKeys
public void removeSyncedSharedPreferencesKeys (Set<String> keys)
Menghapus kunci dari kumpulan kunci yang telah ditambahkan menggunakan addSyncedSharedPreferencesKeys(java.util.Set)
Kunci yang dihapus akan dihapus dari sandbox SDK jika sudah disinkronkan.
Parameter | |
---|---|
keys |
Set : kumpulan nama kunci yang seharusnya tidak lagi disinkronkan ke Sandbox.
Nilai ini tidak boleh null . |
requestSurfacePackage
public void requestSurfacePackage (String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
Mengirim permintaan untuk paket platform ke SDK.
Setelah aplikasi klien menerima sinyal tentang pemuatan SDK yang berhasil, dan telah
menambahkan SurfaceView
ke hierarki tampilan, aplikasi tersebut mungkin meminta SurfacePackage
secara asinkron untuk merender tampilan dari SDK.
Setelah SurfacePackage
siap, callback OutcomeReceiver#onResult
dari receiver
yang diteruskan akan dipanggil. Callback ini akan berisi objek Bundle
, yang akan berisi kunci SdkSandboxManager#EXTRA_SURFACE_PACKAGE
yang nilai terkaitnya adalah SurfacePackage
yang diminta.
params
yang diteruskan harus berisi kunci berikut: EXTRA_WIDTH_IN_PIXELS
, SdkSandboxManager#EXTRA_HEIGHT_IN_PIXELS
, SdkSandboxManager#EXTRA_DISPLAY_ID
, dan SdkSandboxManager#EXTRA_HOST_TOKEN
. Jika salah satu kunci ini tidak ada atau tidak valid, IllegalArgumentException
akan ditampilkan.
API ini hanya dapat dipanggil saat pemanggil berjalan di latar depan. Panggilan dari
latar belakang akan menghasilkan ditampilkannya RequestSurfacePackageException di receiver
.
Parameter | |
---|---|
sdkName |
String : nama SDK yang dimuat ke dalam sandbox SDK.
Nilai ini tidak boleh null . |
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 .
Peristiwa callback dan pemroses dikirim melalui Executor ini
, yang menyediakan cara mudah untuk mengontrol thread yang
digunakan. Untuk mengirim peristiwa melalui thread utama
aplikasi, Anda dapat menggunakan
Context.getMainExecutor() .
Jika tidak, berikan Executor yang dikirimkan ke thread yang sesuai. |
receiver |
OutcomeReceiver : Metode ini akan menampilkan Bundle saat berhasil, yang akan berisi kunci SdkSandboxManager#EXTRA_SURFACE_PACKAGE dengan nilai SurfacePackage , atau RequestSurfacePackageException jika gagal.
Nilai ini tidak boleh null . |
Menampilkan | |
---|---|
IllegalArgumentException |
jika params tidak berisi semua kunci yang diperlukan. |
startSdkSandboxActivity
public void startSdkSandboxActivity (Activity fromActivity, IBinder sdkActivityToken)
Memulai Activity
di sandbox SDK.
Fungsi ini akan memulai Activity
baru dalam tugas yang sama dengan fromActivity
yang diteruskan dan meneruskannya ke SDK yang memiliki sdkActivityToken
yang diteruskan, yang mengidentifikasi permintaan dari SDK tersebut untuk menetapkan Activity
ini.
Activity
tidak akan dimulai dalam kasus berikut:
- Aplikasi yang memanggil API ini ada di latar belakang.
sdkActivityToken
yang diteruskan tidak memetakan ke permintaan untukActivity
dari SDK yang membagikannya dengan aplikasi pemanggil.- SDK yang membagikan
sdkActivityToken
yang diteruskan telah menghapus permintaannya untukActivity
ini. - Sandbox
Activity
sudah dibuat.
Parameter | |
---|---|
fromActivity |
Activity : Activity akan digunakan untuk memulai sandbox baru Activity dengan memanggil Activity#startActivity(Intent) terhadapnya.
Nilai ini tidak boleh null . |
sdkActivityToken |
IBinder : ID yang dibagikan oleh SDK yang meminta Activity .
Nilai ini tidak boleh null . |
unloadSdk
public void unloadSdk (String sdkName)
Menghapus pemuatan SDK yang sebelumnya telah dimuat oleh pemanggil.
Tidak ada jaminan bahwa memori yang dialokasikan untuk SDK ini akan segera dibebaskan. Semua panggilan berikutnya ke requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
untuk sdkName
yang diberikan akan gagal.
API ini hanya dapat dipanggil saat pemanggil berjalan di latar depan. Panggilan dari
latar belakang akan menyebabkan SecurityException
ditampilkan.
Parameter | |
---|---|
sdkName |
String : nama SDK yang akan dihapus muatannya.
Nilai ini tidak boleh null . |
unregisterAppDimilikiSdkSandboxInterface
public void unregisterAppOwnedSdkSandboxInterface (String name)
Membatalkan pendaftaran ERROR(/AppOwnedSdkSandboxInterfaces)
untuk proses aplikasi.
Parameter | |
---|---|
name |
String : nama yang digunakan untuk mendaftarkan AppDimilikiSdkSandboxInterface.
Nilai ini tidak boleh null . |