SdkKorumalı Alan Yöneticisi
public
final
class
SdkSandboxManager
extends Object
java.lang.Object | |
→ Yönergeler | android.app.sdksandbox.SdkSandboxManager |
SDKs
SDK'sını korumalı alan işlemine yüklemek ve ardından 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ı işlemi olabilir.
Uygulamanın öncelikle <uses-sdk-library>
etiketini kullanarak, bağlı olduğu SDK'ları manifest dosyasında açıklaması gerekir. Uygulamalar, yalnızca bağımlı oldukları SDK'ları SDK korumalı alanına yükleyebilir.
Şu kaynakları da inceleyebilirsiniz:
Özet
İç içe yerleştirilmiş sınıflar | |
---|---|
interface |
SdkSandboxManager.SdkSandboxProcessDeathCallback
SDK korumalı alanının ölümünü izlemek için kullanılan geri çağırma. |
Herkese açık yöntemler | |
---|---|
void
|
addSdkSandboxProcessDeathCallback(Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
SDK korumalı alanının ölümü gibi SDK korumalı alan yaşam döngüsü olayları 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ı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)
Bir SDK korumalı alan Java işleminde SDK'yı yükler. |
void
|
registerAppOwnedSdkSandboxInterface(AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
|
void
|
removeSdkSandboxProcessDeathCallback(SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Daha önce |
void
|
removeSyncedSharedPreferencesKeys(Set<String> keys)
Halihazırda senkronize edilmiş olan anahtarlar SDK korumalı alanından silinir. |
void
|
requestSurfacePackage(String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
SDK'ya yüzey paketi için bir istek gönderir. |
void
|
startSdkSandboxActivity(Activity fromActivity, IBinder sdkActivityToken)
SDK korumalı alanında bir |
void
|
unloadSdk(String sdkName)
Arayan tarafından daha önce yüklenen bir SDK'yı kaldırır. |
void
|
unregisterAppOwnedSdkSandboxInterface(String name)
Bir uygulama işlemi için |
Devralınan yöntemler | |
---|---|
Sabitler
EKSTRA_DISPLAY_ID
public static final String EXTRA_DISPLAY_ID
requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
Paket alanlarında kullanılacak anahtarın adı. Anahtarın değeri, SurfacePackage
değerini görüntülemek için mantıksal görüntünün tam sayı kimliğini tanımlamalıdır.
Sabit Değer: "android.app.sdksandbox.extra.DISPLAY_ID"
EKSTRA_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)
Paket alanlarında kullanılacak anahtarın adı. 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)
Paket alanlarında kullanılacak anahtarın adı. Anahtarın değeri, görünüm hiyerarşisine SurfaceView
eklendikten sonra SurfaceView.getHostToken()
tarafından döndürülen jetonu sunmalıdır. 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
requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
alanı olan OutcomeReceiver
öğesinin onResult
işlevine aktarılan Paketteki anahtarın adı; değeri, istenen SurfacePackage
değerini sunar.
Sabit Değer: "android.app.sdksandbox.extra.SURFACE_PACKAGE"
EKSTRA_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)
Paket alanlarında kullanılacak anahtarın adı. 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"
LOAD_SDK_ALREADY_LOADED
public static final int LOAD_SDK_ALREADY_LOADED
SDK zaten yüklü.
Bu, 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ı
belirtir.
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 uygulamadan gelen çağrı uygulanırken genel bir dahili hata oluştuğunu belirtir.
Sabit Değer: 500 (0x000001f4)
LOAD_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)
yöntemini çağırarak var olmayan bir SDK'yı yüklemeyi denediğini 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ı oluştu.
Bu, SDK'nın yükleme sonrası başlatma sırasında hatayla karşılaştığını gösterir. Bununla ilgili ayrıntılar, SdkSandboxManager#loadSdk
ürününe geçirilen OutcomeReceiver
ile LoadSdkException
içinde döndürülen Paketten edinilebilir.
Sabit Değer: 102 (0x00000066)
LOAD_SDK_SDK_SANDBOX_DEVRE DIŞI
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ışı olduğunu gösterir. Bu başlatmada SDK'ları yüklemek için yapılacak sonraki denemeler de 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 mesaj, SurfacePackage
istenirken genel bir dahili hata oluştuğunu 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 durum, korumalı alan öldüğü veya en başta yüklenmediği için SurfacePackage
öğesinin istendiği SDK'nın yüklenmediğini belirtir.
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 öldüğü, bağlantısı kesildiği veya henüz oluşturulmadığı için kullanılamadığını belirtir.
Sabit Değer: 503 (0x000001f7)
SDK_SANDBOX_SERVICE
public static final String SDK_SANDBOX_SERVICE
Bu istemci uygulamasına ait SDK'larla etkileşim kurmaya yönelik 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. Telefonla arama denemeleri UnsupportedOperationException
sonucuna varır.
Sabit Değer: 0 (0x00000000)
SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
public static final int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
SDK korumalı alanı etkinleştirildi.
Uygulama, ilgili SDK korumalı alan işlemine bağlı olarak SDKs
yüklemek için SdkSandboxManager
API'lerini kullanabilir.
Sabit Değer: 2 (0x00000002)
Herkese açık yöntemler
addSdkSandboxProcessDeathCallback
public void addSdkSandboxProcessDeathCallback (Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
SDK korumalı alanının ölümü gibi SDK korumalı alan yaşam döngüsü olayları 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 artık bu korumalı alan için etkinleştirilir. Ölümü algılamak için birden çok geri çağırma 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, hangi iş parçacığının kullanıldığını kontrol etmek için kolay bir yol sağlayan bu Executor aracılığıyla gönderilir. Etkinlikleri uygulamanızın ana iş parçacığı üzerinden göndermek için Context.getMainExecutor() kullanabilirsiniz.
Aksi takdirde, uygun iş parçacığına gönderim yapan bir Executor sağlayın. |
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : SDK korumalı alan yaşam döngüsü olaylarını alacak SdkSandboxProcessDeathCallback .
Bu değer null olamaz. |
addSyncedSharedPreferencesKeys
public void addSyncedSharedPreferencesKeys (Set<String> keys)
Uygulamanın varsayılan SharedPreferences
öğesinden SDK korumalı alanına senkronize edilen anahtar grubuna anahtar ekler.
Senkronize edilen veriler, SdkSandboxController.getClientSharedPreferences()
API'yi kullanarak SDK'ların okuması için hazır olacaktır.
Bu API kullanılarak eklenen herhangi bir anahtarı senkronize etmeyi durdurmak için removeSyncedSharedPreferencesKeys(java.util.Set)
işlevini kullanın.
Uygulama yeniden başlatılırsa ve kullanıcının senkronizasyon için anahtar havuzunu yeniden oluşturmak üzere bu API'yi tekrar çağırması gerekirse senkronizasyon bozulur.
Not: Bu sınıf, birden fazla işlemde kullanımı desteklememektedir.
Parametreler | |
---|---|
keys |
Set : Korumalı Alan ile senkronize edilecek anahtar grubu.
Bu değer null olamaz. |
alUygulamaSahipliSdkKorumalı AlanArayüzleri
public List<AppOwnedSdkSandboxInterface> getAppOwnedSdkSandboxInterfaces ()
Bir uygulama için kayıtlı AppOwnedSdkSandboxInterface
listesini getirir
İlerlemeler | |
---|---|
List<AppOwnedSdkSandboxInterface> |
çağrı bilgisi, haritada bulunamadıysa boş liste, aksi takdirde bir AppOwnedSdkSandboxInterface listesi
Bu değer, null olamaz. |
Korumalı AlanadiSdk'ler
public List<SandboxedSdk> getSandboxedSdks ()
Korumalı alana yüklenen SDK'lar hakkında bilgi getirir.
İlerlemeler | |
---|---|
List<SandboxedSdk> |
Şu anda yüklü olan tüm SDK'ları içeren SandboxedSdk listesi.
Bu değer null olamaz. |
getSdkSandboxState
public static int getSdkSandboxState ()
SDK korumalı alanı özelliğinin 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
değerinden SDK korumalı alanına senkronize edilmekte olan anahtarları döndürür.
İlerlemeler | |
---|---|
Set<String> |
Bu değer null olamaz. |
yükSdk
public void loadSdk (String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
Bir SDK korumalı alan Java işleminde SDK'yı yükler.
sdkName
içeren SDK kitaplığını, eşzamansız olarak SDK korumalı alan işlemine yükler. Arayan, receiver
aracılığıyla bilgilendirilir.
Arayan kişi, <uses-sdk-library>
etiketini kullanarak manifest dosyasında bağımlı olduğu SDKs
özelliğini halihazırda beyan etmelidir. Arayan, SDK korumalı alanına bağlı olduğu yalnızca SDKs
dosyasını yükleyebilir.
İstemci uygulaması ilk SDK'yı yüklediğinde yeni bir SDK korumalı alan işlemi oluşturulur. İstemci uygulama için önceden bir korumalı alan oluşturulmuşsa ek SDK'lar aynı korumalı alana yüklenir.
Bu API yalnızca arayan ön planda çalışırken çağrılabilir. Arka planda yapılan aramalar, 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 istemci ile SDK arasında kararlaştırılan şekilde Bundle biçiminde iletilecek ek parametreler.
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, hangi iş parçacığının kullanıldığını kontrol etmek için kolay bir yol sağlayan bu Executor aracılığıyla gönderilir. Etkinlikleri uygulamanızın ana iş parçacığı üzerinden göndermek için Context.getMainExecutor() kullanabilirsiniz.
Aksi takdirde, uygun iş parçacığına gönderim yapan bir Executor sağlayın. |
receiver |
OutcomeReceiver : Bu, başarılı bir çalıştırmada SandboxedSdk veya LoadSdkException alır.
Bu değer null olamaz. |
kayıtUygulamaSahipliSdkKorumalı AlanArayüzü
public void registerAppOwnedSdkSandboxInterface (AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)
AppOwnedSdkSandboxInterface
uygulamasını bir uygulama işlemine kaydeder.
Daha önce kaydedilmiş bir arayüzle aynı ada sahip bir AppOwnedSdkSandboxInterface
kaydedildiğinde IllegalStateException
elde edilir.
AppOwnedSdkSandboxInterface#getName()
, arayüzün adını ifade eder.
Parametreler | |
---|---|
appOwnedSdkSandboxInterface |
AppOwnedSdkSandboxInterface : Kaydedilecek AppOwnedSdkSandboxInterface
Bu değer null olamaz. |
Kaldır
public void removeSdkSandboxProcessDeathCallback (SdkSandboxManager.SdkSandboxProcessDeathCallback callback)
Daha önce addSdkSandboxProcessDeathCallback(java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.SdkSandboxProcessDeathCallback)
kullanılarak eklenmiş bir SdkSandboxProcessDeathCallback
kaldırılır
Parametreler | |
---|---|
callback |
SdkSandboxManager.SdkSandboxProcessDeathCallback : Daha önce
SdkSandboxManager#addSdkSandboxProcessDeathCallback(Executor,
SdkSandboxProcessDeathCallback) kullanılarak eklenen 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
Halihazırda senkronize edilmiş olan anahtarlar SDK korumalı alanından silinir.
Parametreler | |
---|---|
keys |
Set : Artık Korumalı Alan ile senkronize edilmeyecek anahtar adları grubu.
Bu değer null olamaz. |
İstekSurfacePaketi
public void requestSurfacePackage (String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
SDK'ya yüzey paketi için bir istek gönderir.
İstemci uygulaması, SDK'nın başarılı bir şekilde yüklendiğine dair bir sinyal aldıktan ve görünüm hiyerarşisine bir SurfaceView
ekledikten sonra, SDK'dan görünüm oluşturmak için eşzamansız olarak SurfacePackage
isteğinde bulunabilir.
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çeren 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çersizse 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 değerinin döndürülmesine neden olur.
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 geçirdiği 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, hangi iş parçacığının kullanıldığını kontrol etmek için kolay bir yol sağlayan bu Executor aracılığıyla gönderilir. Etkinlikleri uygulamanızın ana iş parçacığı üzerinden göndermek için Context.getMainExecutor() kullanabilirsiniz.
Aksi takdirde, uygun iş parçacığına gönderim yapan bir Executor sağlayın. |
receiver |
OutcomeReceiver : Bu işlem, başarılı olduğunda SurfacePackage değerine sahip SdkSandboxManager#EXTRA_SURFACE_PACKAGE anahtarını içeren Bundle veya hata durumunda RequestSurfacePackageException döndürür.
Bu değer null olamaz. |
Dekoratif yastıklar | |
---|---|
IllegalArgumentException |
(params ) gerekli tüm anahtarları içermiyorsa. |
Şu kaynakları da inceleyebilirsiniz:
başlangıçSdkKorumalı AlanEtkinliği
public void startSdkSandboxActivity (Activity fromActivity, IBinder sdkActivityToken)
SDK korumalı alanında bir Activity
başlatır.
Bu işlev, iletilen fromActivity
göreviyle aynı görevde yeni bir Activity
başlatır ve bunu, iletilen sdkActivityToken
bilgisini paylaşan SDK'ya iletir. Bu SDK'dan bu Activity
özelliğini belirtmek için bir istek tanımlar.
Activity
aşağıdaki durumlarda başlamaz:
- Bu API'yi çağıran Uygulama arka plandadır.
- İletilen
sdkActivityToken
, kendisini arayan uygulamayla paylaşan SDK'dan birActivity
formu isteğiyle eşlenmiyor. - İletilen
sdkActivityToken
öğesini paylaşan SDK, buActivity
için isteğini kaldırdı. Activity
korumalı alanı zaten oluşturulmuş.
Parametreler | |
---|---|
fromActivity |
Activity : Activity , buna karşı Activity#startActivity(Intent) çağrısı yaparak yeni Activity korumalı alanını başlatmak için 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. |
unloadSdk
public void unloadSdk (String sdkName)
Arayan tarafından daha önce yüklenen bir SDK'yı kaldırır.
Bu SDK için ayrılan belleğin hemen boşayacağı garanti edilmez. Belirtilen sdkName
için requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)
öğesine yapılan sonraki tüm çağrılar başarısız olur.
Bu API yalnızca arayan ön planda çalışırken çağrılabilir. Arka plandan yapılan aramalar, SecurityException
cihazın atılmasına neden olur.
Parametreler | |
---|---|
sdkName |
String : Kaldırılacak SDK'nın adı.
Bu değer null olamaz. |
unregisterAppSahipSdkKorumalı AlanArayüzü
public void unregisterAppOwnedSdkSandboxInterface (String name)
Bir uygulama işlemi için ERROR(/AppOwnedSdkSandboxInterfaces)
kaydını iptal eder.
Parametreler | |
---|---|
name |
String : AppOwnedSdkSandboxInterface'in kayıtlı olduğu ad.
Bu değer null olamaz. |