SDKKorumalı Alan Yöneticisi
public
final
class
SdkSandboxManager
extends Object
java.lang.Object | |
🎃 | android.app.sdksandbox.SdkSandboxManager |
SDKs
öğesini
SDK korumalı alan işleme ve ardından bunlarla etkileşimde bulunma.
SDK korumalı alanı, ayrı bir benzersiz kullanıcı kimliği aralığında çalışan bir Java işlemidir. Her uygulamanın kendi SDK'sı olabilir korumalı alan işlemidir.
Uygulamanın öncelikle manifest dosyasında kullandığı SDK'ları <uses-sdk-library>
etiketini kullanarak bildirmesi gerekir. Uygulamalar yalnızca kullandıkları SDK'ları SDK korumalı alanına yükleyebilirler.
Şu kaynakları da inceleyin:
Özet
İç içe yerleştirilmiş sınıflar | |
---|---|
interface |
SdkSandboxManager.SdkSandboxProcessDeathCallback
SDK korumalı alanı ölümünü izlemek için geri çağırma. |
Herkese açık yöntemler | |
---|---|
void
|
addSdkSandboxProcessDeathCallback(Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
SDK korumalı alanı gibi SDK korumalı alanı yaşam döngüsü etkinlikleri için kaydedilen bir geri çağırma ekler ölümcül olabilir. |
void
|
addSyncedSharedPreferencesKeys(Set<String> keys)
Uygulamanın varsayılan |
List<AppOwnedSdkSandboxInterface>
|
getAppOwnedSdkSandboxInterfaces()
Bir uygulama için kaydedilen |
List<SandboxedSdk>
|
getSandboxedSdks()
Korumalı alana yüklenen SDK'larla ilgili bilgileri getirir. |
static
int
|
getSdkSandboxState()
SDK korumalı alanı özelliğinin mevcut kullanılabilirlik durumunu döndürür. |
Set<String>
|
getSyncedSharedPreferencesKeys()
Uygulamanın varsayılan |
void
|
loadSdk(String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
SDK'yı korumalı alan Java işlemine yükler. |
void
|
registerAppOwnedSdkSandboxInterface(AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
|
void
|
removeSdkSandboxProcessDeathCallback(SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Daha önce |
void
|
removeSyncedSharedPreferencesKeys(Set<String> keys)
Kaldırılan anahtarlar daha önce senkronize edilmişlerse SDK korumalı alanından silinir. |
void
|
requestSurfacePackage(String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
SDK'ya bir yüzey paketi için istek gönderir. |
void
|
startSdkSandboxActivity(Activity fromActivity, IBinder sdkActivityToken)
SDK korumalı alanında bir |
void
|
unloadSdk(String sdkName)
Arayan tarafından daha önce yüklenmiş bir SDK'yı kaldırır. |
void
|
unregisterAppOwnedSdkSandboxInterface(String name)
Bir uygulama işlemi için |
Devralınan yöntemler | |
---|---|
Sabitler
EKSTRA_DISPLAY_KİMLİĞİ
public static final String EXTRA_DISPLAY_ID
requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
öğesinin Paket alanlarında kullanılacak anahtarın adı. Bu anahtarın değeri, mantıksal
için SurfacePackage
öğesini seçin.
Sabit Değer: "android.app.sdksandbox.extra.DISPLAY_ID"
PİKSEL_AŞAĞI_UZUNLUK
public static final String EXTRA_HEIGHT_IN_PIXELS
requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
öğesinin Paket alanlarında kullanılacak anahtarın adı; bu anahtarın değeri, SurfacePackage
öğesinin tam sayı yüksekliğini piksel cinsinden tanımlamalıdır.
Sabit Değer: "android.app.sdksandbox.extra.HEIGHT_IN_PIXELS"
EKSTRA_HOST_TOKEN
public static final String EXTRA_HOST_TOKEN
requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
öğesinin Paket alanlarında kullanılacak anahtarın adı. Bu anahtarın değeri, SurfaceView
yapıldıktan sonra SurfaceView.getHostToken()
tarafından döndürülen jetonu göstermelidir
görünüm hiyerarşisine eklenir. ANR raporlamasını etkinleştirmek için yalnızca boş olmayan bir değer kabul edilir.
Sabit Değer: "android.app.sdksandbox.extra.HOST_TOKEN"
EKSTRA_SURFACE_PACKAGE
public static final String EXTRA_SURFACE_PACKAGE
Paketteki anahtarın adı, OutcomeReceiver
öğesinin onResult
işlevine (requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
) aktarılır. Bu anahtarın değeri, istenen SurfacePackage
değerini sunar.
Sabit Değer: "android.app.sdksandbox.extra.SURFACE_PACKAGE"
EKSTRA_GENİŞLİK_İÇİ_PİXELS
public static final String EXTRA_WIDTH_IN_PIXELS
requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
öğesinin Paket alanlarında kullanılacak anahtarın adı; bu anahtarın değeri, SurfacePackage
öğesinin tam sayı genişliğini piksel cinsinden tanımlamalıdır.
Sabit Değer: "android.app.sdksandbox.extra.WIDTH_IN_PIXELS"
YÜKLE_SDK_ALREADY_LOADED
public static final int LOAD_SDK_ALREADY_LOADED
SDK zaten yüklü.
Bu, istemci uygulamanın, yüklendikten sonra loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
işlevini çağırarak aynı SDK'yı yeniden yüklemeyi denediğini gösterir.
başarıyla yüklendi.
Sabit Değer: giriş (0x00000065)
LOAD_SDK_INTERNAL_ERROR
public static final int LOAD_SDK_INTERNAL_ERROR
SDK yüklenirken dahili hata oluştu.
Bu, istemciden gelen arama uygulanırken genel bir dahili hata oluştuğunu gösterir bir uygulamadır.
Sabit Değer: 500 (0x000001f4)
YÜKLE_SDK_NOT_FOUND
public static final int LOAD_SDK_NOT_FOUND
SDK bulunamadı.
Bu, istemci uygulamasının loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
çağırarak mevcut olmayan bir SDK'yı yüklemeye çalıştığını gösterir.
Sabit Değer: 100'ler (0x00000064)
LOAD_SDK_SDK_DEFINED_ERROR
public static final int LOAD_SDK_SDK_DEFINED_ERROR
Yüklendikten sonra SDK hatası.
Bu durum, SDK'nın yükleme sonrası başlatma sırasında bir hatayla karşılaştığını gösterir. İlgili içeriği oluşturmak için kullanılan
bunun ayrıntıları, LoadSdkException
içinde iade edilen Paket'ten edinilebilir:
OutcomeReceiver
SdkSandboxManager#loadSdk
e-posta adresine teslim edildi.
Sabit Değer: giriş (0x00000066)
LOAD_SDK_SDK_SANDBOX_DISABLED
public static final int LOAD_SDK_SDK_SANDBOX_DISABLED
SDK korumalı alanı devre dışı bırakıldı.
Bu simge, SDK korumalı alanının devre dışı bırakıldığını gösterir. SDK'ları başarısız olur.
Sabit Değer: 103 (0x00000067)
REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
public static final int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
SurfacePackage
istenirken dahili hata oluştu.
Bu,
SurfacePackage
Sabit Değer: 700 (0x000002bc)
REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
public static final int REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED
SurfacePackage
istenirken SDK yüklenmedi.
Bu, SurfacePackage
öğesinin istendiği SDK'nın olmadığını gösterir
bunun nedeni korumalı alanın ölmesi veya daha önce yüklenmemesi olabilir.
Sabit Değer: 701 (0x000002bd)
SDK_SANDBOX_İŞLEM_DEĞİL
public static final int SDK_SANDBOX_PROCESS_NOT_AVAILABLE
SDK korumalı alanı işlemi kullanılamıyor.
Bu, SDK korumalı alanı işleminin öldüğü için veya veya daha önceden oluşturulmamış olabilir.
Sabit Değer: 503 (0x000001f7)
SDK_SANDBOX_SERVICE
public static final String SDK_SANDBOX_SERVICE
SdkSandboxManager
almak için Context#getSystemService(String)
ile kullanın
bu istemci uygulamasına ait SDK'larla etkileşimde bulunmak için kullanılır.
Sabit Değer: "sdk_sandbox"
SDK_SANDBOX_STATE_DEVRE DIŞI
public static final int SDK_SANDBOX_STATE_DISABLED
SDK korumalı alanı devre dışı bırakıldı.
SdkSandboxManager
API gizlendi. Kişi çağrılarını çağırmaya çalışıldığında UnsupportedOperationException
ile karşılaşırsınız.
Sabit Değer: 0 (0x00000000)
SDK_SANDBOX_STATE_ETKİN_İŞLEM_ISOLATION
public static final int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
SDK korumalı alanı etkinleştirildi.
Uygulama, bağımlı olduğu SDKs
verisini yüklemek için SdkSandboxManager
API'lerini kullanabilir
ilgili SDK korumalı alan işlemine ilişkin bilgiler içerir.
Sabit Değer: 2. (0x00000002)
Herkese açık yöntemler
addSdkSandboxProcessDeathCallback
public void addSdkSandboxProcessDeathCallback (Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
SDK korumalı alanı gibi SDK korumalı alanı yaşam döngüsü etkinlikleri için kaydedilen bir geri çağırma ekler ölümcül olabilir. Bu çağrı çağrıldığında korumalı alan henüz oluşturulmadıysa istek Korumalı alan oluşturulana kadar saklanır ve ardından söz konusu korumalı alan için etkinleştirilir. Birden çok ölümü algılamak için geri çağırmalar eklenebilir ve korumalı alan öldüğünde kaldırılmaz.
Parametreler | |
---|---|
callbackExecutor |
Executor : Geri çağırmanın çağrılacağı Executor
Bu değer null olamaz.
Geri çağırma ve işleyici etkinlikleri bu
Executor
kullanılır. Etkinlikleri
oluşturmak için
Context.getMainExecutor()
Aksi takdirde, uygun bir ileti dizisine yönlendiren bir Executor sağlayın. |
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : SDK korumalı alanını alacak SdkSandboxProcessDeathCallback
yaşam döngüsü olayları.
Bu değer null olamaz. |
addSyncedSharedPreferencesKeys
public void addSyncedSharedPreferencesKeys (Set<String> keys)
Uygulamanın varsayılan SharedPreferences
kaynağından SDK'ya senkronize edilen anahtar grubuna anahtar ekler
korumalıdır.
SDK'lar, senkronize edilen verileri SdkSandboxController.getClientSharedPreferences()
API'yi kullanarak okuyabilir.
Bu API kullanılarak eklenen herhangi bir anahtarı senkronize etmeyi durdurmak için removeSyncedSharedPreferencesKeys(java.util.Set)
yöntemini kullanın.
Uygulama yeniden başlatılırsa ve kullanıcının havuzu yeniden oluşturmak için bu API'yi tekrar çağırması gerekirse senkronizasyon kesintiye uğrar sayısı.
Not: Bu sınıf, birden fazla işlemde kullanımı desteklemez.
Parametreler | |
---|---|
keys |
Set : Korumalı alan ile senkronize edilecek anahtar grubu.
Bu değer null olamaz. |
getAppSahip olunanSdkSandboxArayüzleri
public List<AppOwnedSdkSandboxInterface> getAppOwnedSdkSandboxInterfaces ()
Bir uygulama için kaydedilen AppOwnedSdkSandboxInterface
listesini getirir
İlerlemeler | |
---|---|
List<AppOwnedSdkSandboxInterface> |
Çağrı Bilgileri, haritada bulunamazsa boş liste, aksi takdirde AppOwnedSdkSandboxInterface listesi
Bu değer null olamaz. |
getSandboxedSdks'ler
public List<SandboxedSdk> getSandboxedSdks ()
Korumalı alana yüklenen SDK'larla ilgili bilgileri getirir.
İlerlemeler | |
---|---|
List<SandboxedSdk> |
Şu anda yüklü tüm SDK'ları içeren SandboxedSdk listesi.
Bu değer null olamaz. |
getSdkSandboxState
public static int getSdkSandboxState ()
SDK korumalı alanı özelliğinin mevcut kullanılabilirlik durumunu döndürür.
İlerlemeler | |
---|---|
int |
Değer SDK_SANDBOX_STATE_DISABLED veya SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION |
getSyncedSharedPreferencesKeys
public Set<String> getSyncedSharedPreferencesKeys ()
Uygulamanın varsayılan SharedPreferences
ayarından şuna senkronize edilen anahtarları döndürür:
SDK korumalı alanı.
İlerlemeler | |
---|---|
Set<String> |
Bu değer null olamaz. |
loadSdk
public void loadSdk (String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
SDK'yı korumalı alan Java işlemine yükler.
SDK korumalı alanı işlemine eşzamansız olarak sdkName
içeren SDK kitaplığını yükler. İlgili içeriği oluşturmak için kullanılan
arayan, receiver
üzerinden bilgilendirilecek.
Arayan, manifest dosyasında kullandığı SDKs
öğesini <uses-sdk-library>
etiketini kullanarak belirtmelidir. Arayan, kullandığı SDKs
SDK'yı yalnızca SDK'ya yükleyebilir.
korumalıdır.
İstemci uygulaması ilk SDK'yı yüklediğinde yeni bir SDK korumalı alanı işlemi oluşturuldu. İstemci uygulaması için önceden bir korumalı alan oluşturulduysa ek SDK'lar aynı korumalı alana yüklenir.
Bu API yalnızca arayan ön planda çalışırken çağrılabilir. Gelen aramalar:
arka plan, receiver
içinde LoadSdkException
döndürülmesiyle sonuçlanır.
Parametreler | |
---|---|
sdkName |
String : Yüklenecek SDK'nın adı.
Bu değer null olamaz. |
params |
Bundle : SDK'ya Bundle biçiminde iletilecek ek parametreler
kararlaştırıldığı gibidir.
Bu değer null olamaz. |
executor |
Executor : Alıcının çağrılacağı Executor .
Bu değer null olamaz.
Geri çağırma ve işleyici etkinlikleri bu
Executor
kullanılır. Etkinlikleri
oluşturmak için
Context.getMainExecutor()
Aksi takdirde, uygun bir ileti dizisine yönlendiren bir Executor sağlayın. |
receiver |
OutcomeReceiver : Bu, başarılı bir koşuda SandboxedSdk veya LoadSdkException alır.
Bu değer null olamaz. |
registerAppSahip olunanSdkSandboxInterface
public void registerAppOwnedSdkSandboxInterface (AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
AppOwnedSdkSandboxInterface
bir uygulama işlemi için kaydedilir.
Öncekiyle aynı ada sahip bir AppOwnedSdkSandboxInterface
kaydediliyor
IllegalStateException
ile sonuçlanacaktır.
AppOwnedSdkSandboxInterface#getName()
, arayüzün adını ifade eder.
Parametreler | |
---|---|
appOwnedSdkSandboxInterface |
AppOwnedSdkSandboxInterface : Kaydedilecek AppSahipSdkSandboxInterface
Bu değer null olamaz. |
removeSdkSandboxProcessDeathCallback
public void removeSdkSandboxProcessDeathCallback (SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Daha önce addSdkSandboxProcessDeathCallback(java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.SdkSandboxProcessDeathCallback)
kullanılarak eklenen bir SdkSandboxProcessDeathCallback
kaldırılır
Parametreler | |
---|---|
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : Daha önceSdkSandboxProcessDeathCallback
SdkSandboxManager#addSdkSandboxProcessDeathCallback(Executor,
SdkSandboxProcessDeathCallback)
Bu değer null olamaz. |
removeSyncedSharedPreferencesKeys
public void removeSyncedSharedPreferencesKeys (Set<String> keys)
addSyncedSharedPreferencesKeys(java.util.Set)
kullanılarak eklenen anahtar grubundan anahtarları kaldırır
Kaldırılan anahtarlar daha önce senkronize edilmişlerse SDK korumalı alanından silinir.
Parametreler | |
---|---|
keys |
Set : Artık Korumalı Alan ile senkronize edilmemesi gereken anahtar adları grubu.
Bu değer null olamaz. |
requestSurfacePackage
public void requestSurfacePackage (String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
SDK'ya bir yüzey paketi için istek gönderir.
İstemci uygulaması SDK'nın başarıyla yüklendiğini belirten bir sinyal aldıktan sonra ve
görünüm hiyerarşisine bir SurfaceView
eklendiyse eşzamansız olarak istekte bulunabilir
SDK'dan görünüm oluşturmak için SurfacePackage
.
SurfacePackage
hazır olduğunda, OutcomeReceiver#onResult
geri çağırması
iletilen receiver
çağrılır. Bu geri arama bir Bundle
içerecek
bir nesneye ait SdkSandboxManager#EXTRA_SURFACE_PACKAGE
ilişkilendirilmiş değer, istenen SurfacePackage
.
İletilen params
şu anahtarları içermelidir: EXTRA_WIDTH_IN_PIXELS
, SdkSandboxManager#EXTRA_HEIGHT_IN_PIXELS
,
SdkSandboxManager#EXTRA_DISPLAY_ID
ve SdkSandboxManager#EXTRA_HOST_TOKEN
. Eğer
bu anahtarlardan herhangi biri eksik veya geçersizse IllegalArgumentException
hatası verilir.
Bu API yalnızca arayan ön planda çalışırken çağrılabilir. Gelen aramalar:
arka plan, receiver
içinde RequestSurfacePackageException hatası döndürülmesiyle sonuçlanır.
Parametreler | |
---|---|
sdkName |
String : SDK korumalı alanına yüklenen SDK'nın adı.
Bu değer null olamaz. |
params |
Bundle : istemci uygulamanın SDK'ya aktardığı parametreler.
Bu değer null olamaz. |
callbackExecutor |
Executor : Geri çağırmanın çağrılacağı Executor
Bu değer null olamaz.
Geri çağırma ve işleyici etkinlikleri bu
Executor
kullanılır. Etkinlikleri
oluşturmak için
Context.getMainExecutor()
Aksi takdirde, uygun bir ileti dizisine yönlendiren bir Executor sağlayın. |
receiver |
OutcomeReceiver : Bu işlem başarılı olursa anahtarı içeren bir Bundle döndürür.
SurfacePackage değerine sahip SdkSandboxManager#EXTRA_SURFACE_PACKAGE veya
Hata durumunda RequestSurfacePackageException .
Bu değer null olamaz. |
Fırlatma | |
---|---|
IllegalArgumentException |
params gerekli tüm anahtarları içermiyorsa. |
Şu kaynakları da inceleyin:
startSdkSandboxActivity
public void startSdkSandboxActivity (Activity fromActivity, IBinder sdkActivityToken)
SDK korumalı alanında bir Activity
başlatır.
Bu işlev, iletilen fromActivity
ile aynı görevde yeni bir Activity
başlatır ve bunu, iletilen sdkActivityToken
dosyasını paylaşan SDK'ya iletir.
bu Activity
SDK'sını istatistikleri için söz konusu SDK'dan gelen isteği tanımlar.
Activity
aşağıdaki durumlarda başlamaz:
- Bu API'ye çağrı yapan Uygulama arka planda.
- İletilen
sdkActivityToken
,Activity
isteğiyle eşleşmiyor oluşturan SDK'yı kullanabilirsiniz. - İletilen
sdkActivityToken
öğesini paylaşan SDK, buActivity
. Activity
korumalı alanı zaten oluşturuldu.
Parametreler | |
---|---|
fromActivity |
Activity : Activity , Activity#startActivity(Intent) çağrısı yaparak yeni korumalı alanı Activity başlatmak için kullanılır.
Bu değer null olamaz. |
sdkActivityToken |
IBinder : SDK tarafından paylaşılan ve Activity için istekte bulunan tanımlayıcı.
Bu değer null olamaz. |
kaldırmaSdk
public void unloadSdk (String sdkName)
Arayan tarafından daha önce yüklenmiş bir SDK'yı kaldırır.
Bu SDK için ayrılan belleğin hemen serbest bırakılacağı garanti edilmez. Tümü
requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
için sonraki çağrılar
için sdkName
başarısız olur.
Bu API yalnızca arayan ön planda çalışırken çağrılabilir. Gelen aramalar:
arka plan bir SecurityException
atılır.
Parametreler | |
---|---|
sdkName |
String : Kaldırılacak SDK'nın adı.
Bu değer null olamaz. |
unregisterAppSahipSdkSandboxInterface
public void unregisterAppOwnedSdkSandboxInterface (String name)
Bir uygulama işlemi için ERROR(/AppOwnedSdkSandboxInterfaces)
hesabının kaydını iptal eder.
Parametreler | |
---|---|
name |
String : AppSahipSdkSandboxInterface'in kayıtlı olduğu ad.
Bu değer null olamaz. |