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,Activityisteğiyle eşleşmiyor oluşturan SDK'yı kullanabilirsiniz. - İletilen
sdkActivityTokenöğesini paylaşan SDK, buActivity. Activitykorumalı 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. |