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 SDK-nya sendiri dalam proses sandbox{i> <i}ini.
Aplikasi harus terlebih dahulu mendeklarasikan SDK yang menjadi dependensinya dalam manifesnya menggunakan tag <uses-sdk-library>
. Aplikasi hanya dapat memuat SDK yang diandalkan ke sandbox SDK.
Ringkasan
Class bertingkat | |
---|---|
interface |
SdkSandboxManager.SdkSandboxProcessDeathCallback
Callback untuk melacak peristiwa pelacakan penghentian sandbox SDK. |
Metode publik | |
---|---|
void
|
addSdkSandboxProcessDeathCallback(Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Menambahkan callback yang terdaftar untuk peristiwa siklus proses sandbox SDK, seperti sandbox SDK kematian. |
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 kumpulan kunci yang sedang 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 muatan SDK yang sebelumnya telah dimuat oleh pemanggil. |
void
|
unregisterAppOwnedSdkSandboxInterface(String name)
Membatalkan pendaftaran |
Metode turunan | |
---|---|
Konstanta
ID_DISPLAY_TAMBAHAN
public static final String EXTRA_DISPLAY_ID
Nama kunci yang akan digunakan di kolom Paket requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
, nilainya harus menentukan ID bilangan bulat logika
untuk menampilkan SurfacePackage
.
Nilai Konstanta: "android.app.sdksandbox.extra.DISPLAY_ID"
TAMBAHAN_TINGGI_IN_PIXELS
public static final String EXTRA_HEIGHT_IN_PIXELS
Nama kunci yang akan digunakan di 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"
PAKET_SURFACE_EXTRA_SURFACE
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 menampilkan SurfacePackage
yang diminta.
Nilai Konstanta: "android.app.sdksandbox.extra.SURFACE_PACKAGE"
EXTRA_WIDTH_IN_PIXELS
public static final String EXTRA_WIDTH_IN_PIXELS
Nama kunci yang akan digunakan di 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 klien aplikasi.
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 pasca-pemuatan. Tujuan
detail informasi 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 di proses {i>booting<i} 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 meminta SurfacePackage
tidak
dimuat, baik karena {i>sandbox<i} mati
atau karena tidak dimuat sejak awal.
Nilai Konstanta: 701 (0x000002bd)
SDK_SANDBOX_PROGRESS_NOT_AVAILABLE
public static final int SDK_SANDBOX_PROCESS_NOT_AVAILABLE
Proses sandbox SDK tidak tersedia.
Ini menunjukkan bahwa proses {i>sandbox<i} SDK tidak tersedia, baik karena proses {i>sandbox<i} SDK telah dihentikan, 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
untuk 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 ke 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 sandbox SDK kematian. Jika {i>sandbox<i} belum dibuat ketika dipanggil, permintaan akan disimpan sampai {i>sandbox<i} dibuat, dan pada saat itu {i>sandbox<i} diaktifkan untuk {i>sandbox<i} tersebut. Beberapa callback bisa ditambahkan untuk mendeteksi kematian dan tidak akan dihapus ketika 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, sediakan Executor yang melakukan pengiriman ke thread yang sesuai. |
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : SdkSandboxProcessDeathCallback yang akan menerima sandbox SDK
peristiwa siklus proses.
Nilai ini tidak boleh null . |
addSyncedSharedPreferencesKeys
public void addSyncedSharedPreferencesKeys (Set<String> keys)
Menambahkan kunci ke kumpulan kunci yang disinkronkan dari SharedPreferences
default aplikasi ke SDK
sandbox.
Data yang disinkronkan akan tersedia untuk dibaca oleh SDK menggunakan SdkSandboxController.getClientSharedPreferences()
API.
Untuk berhenti menyinkronkan kunci apa pun yang telah ditambahkan menggunakan API ini, gunakan removeSyncedSharedPreferencesKeys(java.util.Set)
.
Sinkronisasi akan berhenti jika aplikasi dimulai ulang dan pengguna harus memanggil API ini lagi untuk membangun ulang kumpulan untuk sinkronisasi.
Catatan: Class ini tidak mendukung penggunaan pada beberapa proses.
Parameter | |
---|---|
keys |
Set : kumpulan kunci yang akan disinkronkan ke Sandbox.
Nilai ini tidak boleh null . |
getAppOwnedSdkSandboxInterfaces
public List<AppOwnedSdkSandboxInterface> getAppOwnedSdkSandboxInterfaces ()
Mengambil daftar AppOwnedSdkSandboxInterface
yang terdaftar untuk aplikasi
Hasil | |
---|---|
List<AppOwnedSdkSandboxInterface> |
daftar kosong jika callInfo 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.
Hasil | |
---|---|
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.
Hasil | |
---|---|
int |
Nilai adalah SDK_SANDBOX_STATE_DISABLED , atau SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION |
getSyncedSharedPreferencesKeys
public Set<String> getSyncedSharedPreferencesKeys ()
Menampilkan kumpulan kunci yang sedang disinkronkan dari SharedPreferences
default aplikasi ke
sandbox SDK.
Hasil | |
---|---|
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. Tujuan
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 SDK
sandbox.
Saat aplikasi klien memuat SDK pertama, proses {i>sandbox<i} SDK yang baru akan dibuat. Jika sandbox sudah dibuat untuk aplikasi klien, SDK tambahan akan dimuat ke sandbox yang sama.
API ini hanya dapat dipanggil saat pemanggil berjalan di latar depan. Panggilan dari
latar belakang akan menghasilkan LoadSdkException
yang ditampilkan di 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 digunakan untuk 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, sediakan Executor yang melakukan pengiriman ke thread yang sesuai. |
receiver |
OutcomeReceiver : Fungsi ini menerima SandboxedSdk jika berhasil dijalankan, atau LoadSdkException .
Nilai ini tidak boleh null . |
registerAppOwnedSdkSandboxInterfaces
public void registerAppOwnedSdkSandboxInterface (AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
Mendaftarkan AppOwnedSdkSandboxInterface
untuk proses aplikasi.
Mendaftarkan AppOwnedSdkSandboxInterface
yang memiliki nama yang sama dengan nama sebelumnya
antarmuka yang terdaftar akan
menghasilkan IllegalStateException
.
AppOwnedSdkSandboxInterface#getName()
merujuk pada nama antarmuka.
Parameter | |
---|---|
appOwnedSdkSandboxInterface |
AppOwnedSdkSandboxInterface : AppOwnedSdkSandboxInterfaces 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 memiliki
menambahkan SurfaceView
ke hierarki tampilan, elemen ini dapat meminta secara asinkron
SurfacePackage
untuk merender tampilan dari SDK.
Saat SurfacePackage
sudah siap, callback OutcomeReceiver#onResult
dari
receiver
yang diteruskan akan dipanggil. Callback ini akan berisi Bundle
, yang akan berisi kunci SdkSandboxManager#EXTRA_SURFACE_PACKAGE
yang
nilai yang terkait 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 hilang atau tidak valid, IllegalArgumentException
akan ditampilkan.
API ini hanya dapat dipanggil saat pemanggil berjalan di latar depan. Panggilan dari
latar belakang akan menyebabkan 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, sediakan Executor yang melakukan pengiriman 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 dari fromActivity
yang diteruskan dan meneruskannya ke SDK yang membagikan 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 berada di latar belakang.
sdkActivityToken
yang diteruskan tidak dipetakan ke permintaan untukActivity
dari SDK yang membagikannya ke aplikasi pemanggil.- SDK yang membagikan
sdkActivityToken
yang telah diteruskan menghapus permintaannya untuk teks iniActivity
. - Sandbox
Activity
sudah dibuat.
Parameter | |
---|---|
fromActivity |
Activity : Activity akan digunakan untuk memulai sandbox baru Activity dengan memanggil Activity#startActivity(Intent) .
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 muatan SDK yang sebelumnya telah dimuat oleh pemanggil.
Tidak ada jaminan bahwa memori yang dialokasikan untuk SDK ini akan segera dikosongkan. 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 . |
membatalkan pendaftaranAppOwnedSdkSandboxInterfaces
public void unregisterAppOwnedSdkSandboxInterface (String name)
Membatalkan pendaftaran ERROR(/AppOwnedSdkSandboxInterfaces)
untuk proses aplikasi.
Parameter | |
---|---|
name |
String : nama yang digunakan untuk mendaftarkan AppOwnedSdkSandboxInterfaces.
Nilai ini tidak boleh null . |