SdkKorumalı Alan Yöneticisi
public
final
class
SdkSandboxManager
extends Object
java.lang.Object | |
∨ | android.app.sdksandbox.SdkKorumalı Alan Yöneticisi |
SDK SDK korumalı alanına SDKs
yüklemek ve daha sonra bunlarla etkileşimde bulunmak için API'ler sağlar.
SDK korumalı alanı, ayrı bir kullanıcı kimliği aralığında çalışan bir java işlemidir. Her uygulamanın kendi SDK korumalı alanı süreci olabilir.
Önce uygulamanın manifest dosyasında kullandığı SDK'ları <uses-sdk-library>
etiketini kullanarak beyan etmesi gerekir. Uygulamalar yalnızca kullandıkları SDK'ları SDK korumalı alanına yükleyebilir.
Şu kaynakları da incelemenizi öneririz:
Özet
İç içe yerleştirilmiş sınıflar | |
---|---|
interface |
SdkSandboxManager.SdkSandboxProcessDeathCallback
Etkinliklerin SDK korumalı alanının ölümü için geri çağırma. |
Herkese açık yöntemler | |
---|---|
void
|
addSdkSandboxProcessDeathCallback(Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
SDK korumalı alanı yaşam döngüsü etkinlikleri (ör. SDK korumalı alanı ölümü) için kaydedilen bir geri çağırma ekler. |
void
|
addSyncedSharedPreferencesKeys(Set<String> keys)
Uygulamanın varsayılan |
List<AppOwnedSdkSandboxInterface>
|
getAppOwnedSdkSandboxInterfaces()
Bir uygulama için kayıtlı |
List<SandboxedSdk>
|
getSandboxedSdks()
Korumalı alana yüklenen SDK'lar hakkında bilgi getirir. |
static
int
|
getSdkSandboxState()
SDK korumalı alanı özelliğinin kullanılabilirliğinin mevcut 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 korumalı alan java işleminde yükler. |
void
|
registerAppOwnedSdkSandboxInterface(AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
Bir uygulama işlemi için |
void
|
removeSdkSandboxProcessDeathCallback(SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Daha önce |
void
|
removeSyncedSharedPreferencesKeys(Set<String> keys)
Kaldırılmış anahtarlar 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
PLUS_DISPLAY_ID
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ı; değeri, SurfacePackage
görüntülemek için mantıksal ekranın tam sayı kimliğini tanımlamalıdır.
Sabit Değer: "android.app.sdksandbox.additional.DISPLAY_ID"
PLUS_HEIGHT_IN_PIXELS
public static final String EXTRA_HEIGHT_IN_PIXELS
requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
paketinde kullanılacak anahtarın adı olan değer, SurfacePackage
cinsinden tam yükseklik değerini piksel cinsinden tanımlamalıdır.
Sabit Değer: "android.app.sdksandbox.additional.HEIGHT_IN_PIXELS"
Extra_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ı. Değeri, SurfaceView
görünüm hiyerarşisine eklendikten sonra SurfaceView.getHostToken()
tarafından döndürülen jetonu sunmalıdır. ANR raporlamasını etkinleştirmek için yalnızca null olmayan bir değer kabul edilir.
Sabit Değer: "android.app.sdksandbox.additional.Host_TOKEN"
PLUS_SURFACE_PACKAGE
public static final String EXTRA_SURFACE_PACKAGE
Paketteki requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
adı olan OutcomeReceiver
işlevinin onResult
işlevine aktarılan anahtarın adı. Değeri, istenen SurfacePackage
değerini gösterir.
Sabit Değer: "android.app.sdksandbox.additional.SURFACE_PACKAGE"
PLUS_WIDTH_IN_PIXELS
public static final String EXTRA_WIDTH_IN_PIXELS
requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
paketinde kullanılacak anahtarın adı olan değer, SurfacePackage
değerini tam sayı olarak piksel cinsinden tanımlamalıdır.
Sabit Değer: "android.app.sdksandbox.additional.WIDTH_IN_PIXELS"
LOAD_SDK_ALREADY_LOADED
public static final int LOAD_SDK_ALREADY_LOADED
SDK zaten yüklendi.
Bu mesaj, istemci uygulamasının başarıyla yüklendikten sonra loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
yöntemini çağırarak aynı SDK'yı yeniden yüklemeye çalıştığını gösterir.
Sabit Değer: 101 (0x00000065)
LOAD_SDK_INTERNAL_ERROR
public static final int LOAD_SDK_INTERNAL_ERROR
SDK yüklenirken dahili hata oluştu.
Bu, istemci istemciden çağrı uygulanırken genel bir dahili hatanın meydana geldiğini belirtir.
Sabit Değer: 500 (0x000001f4)
LOAD_SDK_NOT_FOUND değeri
public static final int LOAD_SDK_NOT_FOUND
SDK bulunamadı.
Bu mesaj, istemci uygulamanı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 (0x00000064)
LOAD_SDK_SDK_DEFINED_ERROR
public static final int LOAD_SDK_SDK_DEFINED_ERROR
Yüklendikten sonra SDK hatası.
Bu, SDK'nın yükleme sonrası başlatma sırasında bir hatayla karşılaştığını gösterir. Bunun ayrıntıları, SdkSandboxManager#loadSdk
içinde iletilen OutcomeReceiver
aracılığıyla LoadSdkException
içinde döndürülen Paketten elde edilebilir.
Sabit Değer: 102 (0x00000066)
LOAD_SDK_SDK_SANDBOX_DISABLED
public static final int LOAD_SDK_SDK_SANDBOX_DISABLED
SDK korumalı alanı devre dışı bırakıldı.
Bu, SDK korumalı alanının devre dışı bırakıldığını gösterir. Bu başlatma işleminde SDK'ları sonraki yükleme denemeleri de başarısız olacaktır.
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, bir SurfacePackage
istenirken genel dahili hatanın meydana geldiğini belirtir.
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, korumalı alan kapatıldığı veya en baştan yüklenmediği için SurfacePackage
için istenen SDK'nın yüklenmediğini gösterir.
Sabit Değer: 701 (0x000002bd)
SDK_SANDBOX_PROCESS_NOT_AVAILABLE
public static final int SDK_SANDBOX_PROCESS_NOT_AVAILABLE
SDK korumalı alanı işlemi kullanılamıyor.
Bu, SDK korumalı alanı işleminin sona ermesinden, bağlantısının kesilmesinden veya en baştan oluşturulmamasından dolayı kullanılamadığını belirtir.
Sabit Değer: 503 (0x000001f7)
SDK_SANDBOX_HİZMETİ
public static final String SDK_SANDBOX_SERVICE
Bu istemci uygulamasına ait SDK'larla etkileşimde bulunmak üzere bir SdkSandboxManager
almak için Context#getSystemService(String)
ile kullanın.
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. Telefon etme denemeleri UnsupportedOperationException
ile sonuçlanır.
Sabit Değer: 0 (0x00000000)
SDK_SANDBOX_State_ACTIVE_PROCESS_ISOLATION
public static final int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
SDK korumalı alanı etkinleştirildi.
Uygulama, SDKs
dosyasını yüklemek için SdkSandboxManager
API'lerini kullanabilir. Bu işlem, ilgili SDK korumalı alanı sürecine bağlıdır.
Sabit Değer: 2 (0x00000002)
Herkese açık yöntemler
addSdkSandboxProcessDeathCallback
public void addSdkSandboxProcessDeathCallback (Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
SDK korumalı alanı yaşam döngüsü etkinlikleri (ör. SDK korumalı alanı ölümü) için kaydedilen bir geri çağırma ekler. Bu çağrıldığında, korumalı alan henüz oluşturulmamışsa istek, bir korumalı alan oluşturulana kadar depolanır ve bu durumda korumalı alan için etkinleştirilir. Ölüm algılamak için birden fazla geri arama eklenebilir.
Parametreler | |
---|---|
callbackExecutor |
Executor : Geri çağırmanın çağrılacağı Executor
Bu değer null olamaz.
|
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : SDK korumalı alan yaşam döngüsü etkinliklerini alacak SdkSandboxProcessDeathCallback .
Bu değer null olamaz. |
addSyncedSharedPreferencesAnahtarları
public void addSyncedSharedPreferencesKeys (Set<String> keys)
Uygulamanın varsayılan SharedPreferences
aracından SDK korumalı alanına senkronize edilen anahtar grubuna anahtar ekler.
Senkronize edilen veriler, SDK'lar tarafından SdkSandboxController.getClientSharedPreferences()
API kullanılarak okunabilir.
Bu API kullanılarak eklenen anahtarları senkronize etmeyi bırakmak için removeSyncedSharedPreferencesKeys(java.util.Set)
tuşunu kullanın.
Uygulama yeniden başlatılırsa senkronizasyon bozulur ve kullanıcının, senkronizasyon amaçlı anahtar havuzunu yeniden oluşturmak için bu API'yi tekrar araması gerekir.
Not: Bu sınıf, birden çok işlemde kullanımı desteklemiyor.
Parametreler | |
---|---|
keys |
Set : Korumalı Alan ile senkronize edilecek anahtar grubu.
Bu değer null olamaz. |
getAppOwnedSdkKorumalı Alan Interfaces
public List<AppOwnedSdkSandboxInterface> getAppOwnedSdkSandboxInterfaces ()
Bir uygulama için kayıtlı AppOwnedSdkSandboxInterface
listesini getirir
İadeler | |
---|---|
List<AppOwnedSdkSandboxInterface> |
Arama bilgisi haritada bulunamazsa boş liste, aksi takdirde AppOwnedSdkSandboxInterface listesi görünür
Bu değer null olamaz. |
getSandboxedddk
public List<SandboxedSdk> getSandboxedSdks ()
Korumalı alana yüklenen SDK'lar hakkında bilgi getirir.
İadeler | |
---|---|
List<SandboxedSdk> |
Yüklenen tüm SDK'ları içeren SandboxedSdk listesi.
Bu değer null olamaz. |
getSdkKorumalı Alan
public static int getSdkSandboxState ()
SDK korumalı alanı özelliğinin kullanılabilirliğinin mevcut durumunu döndürür.
İadeler | |
---|---|
int |
Değer SDK_SANDBOX_STATE_DISABLED veya SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION |
getSyncedSharedPreferences Anahtarları
public Set<String> getSyncedSharedPreferencesKeys ()
Uygulamanın varsayılan SharedPreferences
aracından SDK korumalı alanına senkronize edilen set anahtarlarını döndürür.
İadeler | |
---|---|
Set<String> |
Bu değer null olamaz. |
yükSdk
public void loadSdk (String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
SDK korumalı alan java işleminde yükler.
sdkName
bulunan SDK kitaplığını eşzamansız olarak bir SDK korumalı alanı sürecine yükler. Arayan, receiver
üzerinden bilgilendirilecek.
Arayan, manifest dosyasında <uses-sdk-library>
etiketini kullanarak SDKs
tanımını zaten beyan etmelidir. Arayan, yalnızca SDK korumalı alanına bağlı olarak SDKs
yükleyebilir.
İstemci uygulaması ilk SDK'yı yüklediğinde yeni bir SDK korumalı alan işlemi oluşturulur. İstemci uygulaması için önceden bir korumalı alan oluşturulduysa aynı korumalı alana ek SDK'lar yüklenir.
Bu API yalnızca arayan, ön planda çalışırken çağrılabilir. Arka plandan yapılan
aramalar, receiver
içinde LoadSdkException
döndürülecek.
Parametreler | |
---|---|
sdkName |
String : Yüklenecek SDK'nın adı.
Bu değer null olamaz. |
params |
Bundle : İstemci ile SDK arasında kararlaştırılan şekilde Bundle biçiminde SDK'ya aktarılacak ek parametreler.
Bu değer null olamaz. |
executor |
Executor : Alıcıyı çağıracak Executor .
Bu değer null olamaz.
|
receiver |
OutcomeReceiver : Bu kod, başarılı bir çalıştırmada SandboxedSdk veya LoadSdkException alır.
Bu değer null olamaz. |
registerAppOwnedSdkKorumalı AlanInterface
public void registerAppOwnedSdkSandboxInterface (AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
Bir uygulama işlemi için AppOwnedSdkSandboxInterface
kaydeder.
Daha önce kaydedilmiş bir arayüzle aynı ada sahip bir AppOwnedSdkSandboxInterface
kaydetmek IllegalStateException
sonucunu verir.
AppOwnedSdkSandboxInterface#getName()
, arayüzün adını ifade eder.
Parametreler | |
---|---|
appOwnedSdkSandboxInterface |
AppOwnedSdkSandboxInterface : AppOwnedSdkSandboxInterface için kaydolunacak
Bu değer null olamaz. |
SdkSandboxProcessDeathCallback
public void removeSdkSandboxProcessDeathCallback (SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Daha önce addSdkSandboxProcessDeathCallback(java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.SdkSandboxProcessDeathCallback)
kullanılarak eklenen SdkSandboxProcessDeathCallback
kaldırılır
Parametreler | |
---|---|
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : Daha önce SdkSandboxManager#addSdkSandboxProcessDeathCallback(Executor,
SdkSandboxProcessDeathCallback) kullanılarak eklenen SdkSandboxProcessDeathCallback , bu değer null olamaz. |
SyncSyncedSharedPreferencesAnahtarlarını Kaldır
public void removeSyncedSharedPreferencesKeys (Set<String> keys)
addSyncedSharedPreferencesKeys(java.util.Set)
kullanılarak eklenen anahtar grubundan anahtar kaldırır
Kaldırılmış anahtarlar SDK korumalı alanından silinir.
Parametreler | |
---|---|
keys |
Set : Korumalı alanla artık senkronize edilmemesi gereken anahtar adları grubu.
Bu değer null olamaz. |
SurfacePackage isteği
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ı başarılı bir SDK yükleme işlemi hakkında sinyal aldıktan ve görüntü hiyerarşisine bir SurfaceView
ekledikten sonra, SDK'dan bir görünüm oluşturmak için eşzamansız olarak SurfacePackage
isteyebilir.
SurfacePackage
hazır olduğunda, iletilen receiver
öğesinin OutcomeReceiver#onResult
geri çağırması çağrılır. Bu geri çağırma, ilişkili değeri istenen SurfacePackage
olan SdkSandboxManager#EXTRA_SURFACE_PACKAGE
anahtarını içerecek bir Bundle
nesnesi içerir.
İletilen params
şu anahtarlar içermelidir: EXTRA_WIDTH_IN_PIXELS
, SdkSandboxManager#EXTRA_HEIGHT_IN_PIXELS
, SdkSandboxManager#EXTRA_DISPLAY_ID
ve SdkSandboxManager#EXTRA_HOST_TOKEN
. Bu anahtarlardan herhangi biri eksik veya geçersiz olursa IllegalArgumentException
atılır.
Bu API yalnızca arayan, ön planda çalışırken çağrılabilir. Arka plandan yapılan çağrılar receiver
içinde RequestSurfacePackageException sonucu döndürür.
Parametreler | |
---|---|
sdkName |
String : SDK korumalı alanına yüklenen SDK'nın adı.
Bu değer null olamaz. |
params |
Bundle : İstemci uygulamasının SDK'ya ilettiği parametreler.
Bu değer null olamaz. |
callbackExecutor |
Executor : Geri çağırmanın çağrılacağı Executor
Bu değer null olamaz.
|
receiver |
OutcomeReceiver : Bu, SurfacePackage değerini içeren SdkSandboxManager#EXTRA_SURFACE_PACKAGE anahtarını veya başarısız olduğunda RequestSurfacePackageException anahtarını içerecek şekilde başarı için bir Bundle döndürür.
Bu değer null olamaz. |
Dekoratif yastıklar | |
---|---|
IllegalArgumentException |
params gerekli tüm anahtarları içermiyorsa. |
Şu kaynakları da incelemenizi öneririz:
startSdkKorumalı Alan Etkinliği
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 bu sdkActivityToken
SDK'sından, bu Activity
değerinin işaretlenmesi için yapılan isteği tanımlayan SDK'ya aktarır.
Activity
aşağıdaki durumlarda başlamaz:
- Bu API'ye çağrıda bulunan uygulama arka planda çalışıyor.
- İletilen
sdkActivityToken
ifadesi, çağrıyı arayan uygulamayla paylaşan birActivity
formu isteğiyle eşlenmez. - İletimi paylaşan SDK
sdkActivityToken
, buActivity
isteğini iptal etti. Activity
korumalı alanı zaten oluşturuldu.
Parametreler | |
---|---|
fromActivity |
Activity : Activity , Activity adlı alana karşı yeni bir korumalı alan başlatmak için Activity#startActivity(Intent) kullanılır.
Bu değer null olamaz. |
sdkActivityToken |
IBinder : Activity isteğinde bulunan SDK tarafından paylaşılan tanımlayıcı.
Bu değer null olamaz. |
Scrud'u kaldır
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. Belirli bir sdkName
için sonraki requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
çağrıları başarısız olur.
Bu API yalnızca arayan, ön planda çalışırken çağrılabilir. Arka plandan gelen çağrılar SecurityException
ile sonuçlanacak.
Parametreler | |
---|---|
sdkName |
String : Kaldırılacak SDK'nın adı.
Bu değer null olamaz. |
kayıt iptali: AppOwnedSdkSandboxInterface
public void unregisterAppOwnedSdkSandboxInterface (String name)
Bir uygulama işlemi için ERROR(/AppOwnedSdkSandboxInterfaces)
kaydının kaydını iptal eder.
Parametreler | |
---|---|
name |
String : AppOwnedSdkSandboxInterface öğesinin kaydedildiği ad.
Bu değer null olamaz. |