Trình quản lý SdkSandbox
public
final
class
SdkSandboxManager
extends Object
java.lang.Object | |
↳ | android.app.sdksandbox.SdkSandboxManager |
Cung cấp các API để tải SDKs
vào quy trình hộp cát SDK, sau đó tương tác với các API đó.
SdkSandbox
là một quy trình java chạy trong một dải ô uid riêng biệt. Mỗi ứng dụng đều có
quy trình hộp cát SDK riêng.
Trước tiên, ứng dụng cần khai báo SDKs
mà nó phụ thuộc trong AndroidManifest.xml
sử dụng thẻ <uses-sdk-library>
. Ứng dụng chỉ có thể tải SDKs
mà nó phụ thuộc vào SdkSandbox
.
Lưu ý: Tất cả các API được xác định trong lớp này đều không ổn định và có thể thay đổi.
Tóm tắt
Các lớp lồng ghép | |
---|---|
interface |
SdkSandboxManager.LoadSdkCallback
Lệnh gọi lại để theo dõi các sự kiện liên quan đến việc tải và tương tác với các SDK. |
interface |
SdkSandboxManager.RequestSurfacePackageCallback
Lệnh gọi lại để theo dõi yêu cầu cho gói nền tảng từ SDK. |
interface |
SdkSandboxManager.SendDataCallback
Lệnh gọi lại để theo dõi việc gửi dữ liệu đến SDK. |
Hằng số | |
---|---|
int |
LOAD_SDK_ALREADY_LOADED
SDK đã được tải. |
int |
LOAD_SDK_INTERNAL_ERROR
Đã xảy ra lỗi nội bộ khi tải SDK. |
int |
LOAD_SDK_NOT_FOUND
Không tìm thấy SDK. |
int |
REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
Đã xảy ra lỗi nội bộ khi yêu cầu |
String |
SDK_SANDBOX_SERVICE
Sử dụng với |
int |
SDK_SANDBOX_STATE_DISABLED
Hộp cát SDK bị tắt. |
int |
SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
Hộp cát SDK được bật. |
int |
SEND_DATA_INTERNAL_ERROR
Đã xảy ra lỗi nội bộ khi thực hiện |
Các phương thức công khai | |
---|---|
static
int
|
getSdkSandboxState()
Trả về trạng thái hiện tại của |
void
|
loadSdk(String sdkName, Bundle params, Executor callbackExecutor, SdkSandboxManager.LoadSdkCallback callback)
Tải SDK trong quá trình java sandbox của SDK. |
void
|
requestSurfacePackage(String sdkName, int displayId, int width, int height, Bundle params, Executor callbackExecutor, SdkSandboxManager.RequestSurfacePackageCallback callback)
Gửi yêu cầu về gói nền tảng đến sdk. |
void
|
sendData(String sdkName, Bundle data, Executor callbackExecutor, SdkSandboxManager.SendDataCallback callback)
Gửi một gói |
Các phương thức kế thừa | |
---|---|
Hằng số
LOAD_SDK_ĐÃ_ĐƯỢC_TẢI
public static final int LOAD_SDK_ALREADY_LOADED
SDK đã được tải.
Điều này cho thấy ứng dụng khách đã cố tải lại cùng một SDk bằng cách gọi loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback)
sau khi tải thành công.
Giá trị không đổi: 101 (0x00000065)
LOAD_SDK_ĐÃ_XẢY_RA_LỖI_NỘI_BỘ
public static final int LOAD_SDK_INTERNAL_ERROR
Đã xảy ra lỗi nội bộ khi tải SDK.
Điều này cho thấy lỗi nội bộ chung đã xảy ra khi áp dụng lệnh gọi từ ứng dụng khách.
Giá trị không đổi: 500 (0x000001f4)
LOAD_SDK_KHÔNG_TÌM_THẤY
public static final int LOAD_SDK_NOT_FOUND
Không tìm thấy SDK.
Điều này cho thấy ứng dụng khách đã cố tải SDK không tồn tại bằng cách gọi loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback)
.
Giá trị không đổi: 100 (0x00000064)
YÊU_CẦU_GÓI_NỀN_TẢNG_ĐÃ_XẢY_RA_LỖI_NỘI_BỘ
public static final int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR
Đã xảy ra lỗi nội bộ khi yêu cầu SurfacePackage
.
Điều này cho thấy lỗi nội bộ chung đã xảy ra khi yêu cầu SurfacePackage
.
Giá trị không đổi: 700 (0x000002bc)
DỊCH_VỤ_HỘP_CÁT_SDK
public static final String SDK_SANDBOX_SERVICE
Sử dụng với Context#getSystemService(String)
để truy xuất SdkSandboxManager
khi tương tác với các SDK thuộc ứng dụng khách này.
Giá trị không đổi: "sdk_sandbox"
SDK_SANDBOX_STATE_DISABLED
public static final int SDK_SANDBOX_STATE_DISABLED
Hộp cát SDK bị tắt.
Các API SdkSandboxManager
bị ẩn. Số lần thử gọi sẽ dẫn đến
UnsupportedOperationException
.
Giá trị không đổi: 0 (0x00000000)
SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
public static final int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION
Hộp cát SDK được bật.
Ứng dụng có thể sử dụng các API SdkSandboxManager
để tải SDKs
, tùy thuộc vào
quy trình SdkSandbox
tương ứng.
Giá trị không đổi: 2 (0x00000002)
SEND_DATA_INTERNAL_ERROR
public static final int SEND_DATA_INTERNAL_ERROR
Đã xảy ra lỗi nội bộ khi thực hiện SdkSandboxManager#sendData(String, Bundle, Executor,
SendDataCallback)
.
Điều này cho thấy lỗi nội bộ chung đã xảy ra khi yêu cầu gửi dữ liệu tới SDK.
Giá trị không đổi: 800 (0x00000320)
Các phương thức công khai
getSdkSandboxState
public static int getSdkSandboxState ()
Trả về trạng thái hiện tại của SdkSandbox
.
Trả về | |
---|---|
int |
Giá trị là SDK_SANDBOX_STATE_DISABLED hoặc SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION |
tải Sdk
public void loadSdk (String sdkName, Bundle params, Executor callbackExecutor, SdkSandboxManager.LoadSdkCallback callback)
Tải SDK trong quá trình java sandbox của SDK.
Ứng dụng này tải thư viện SDK có sdkName
vào quy trình hộp cát không đồng bộ, người gọi sẽ được thông báo qua LoadSdkCallback
callback
.
Ứng dụng phải khai báo SDKs
mà nó tùy thuộc vào AndroidManifest
bằng cách sử dụng thẻ <use-sdk-library>
. Ứng dụng chỉ có thể tải SDKs
mà nó phụ thuộc vào SdkSandbox
.
Khi ứng dụng khách tải SDK đầu tiên, quy trình SdkSandbox
mới sẽ được tạo, nếu không các SDK khác sẽ được tải vào cùng một hộp cát đã được tạo cho ứng dụng khách.
Các tham số | |
---|---|
sdkName |
String : tên của SDK cần tải
Giá trị này không được là null . |
params |
Bundle : các thông số mà Ứng dụng chuyển sang SDK
Giá trị này không được là null . |
callbackExecutor |
Executor : Executor để gọi lệnh gọi lại
Giá trị này không được là null . |
callback |
SdkSandboxManager.LoadSdkCallback : LoadSdkCallback sẽ nhận các sự kiện trong quá trình tải SDK
Giá trị này không được là null . |
requestSurfacePackage
public void requestSurfacePackage (String sdkName, int displayId, int width, int height, Bundle params, Executor callbackExecutor, SdkSandboxManager.RequestSurfacePackageCallback callback)
Gửi yêu cầu về gói nền tảng đến sdk.
Sau khi ứng dụng khách nhận được tín hiệu về việc tải SDK thành công bằng SdkSandboxManager.LoadSdkCallback.onLoadSdkSuccess(android.os.Bundle)
, ứng dụng có thể yêu cầu không đồng bộ một SurfacePackage
để kết xuất chế độ xem từ SDK.
SurfacePackage
được yêu cầu sẽ được trả về ứng dụng khách thông qua SdkSandboxManager.RequestSurfacePackageCallback.onSurfacePackageReady(android.view.SurfaceControlViewHost.SurfacePackage, int, android.os.Bundle)
.
Các tham số | |
---|---|
sdkName |
String : tên SDK được tải vào hộp cát sdk
Giá trị này không được là null . |
displayId |
int : mã màn hình logic để hiển thị gói nền tảng |
width |
int : chiều rộng của gói nền tảng |
height |
int : chiều cao của gói nền tảng |
params |
Bundle : các thông số mà ứng dụng khách chuyển sang SDK
Giá trị này không được là null . |
callbackExecutor |
Executor : Executor để gọi lệnh gọi lại
Giá trị này không được là null . |
callback |
SdkSandboxManager.RequestSurfacePackageCallback : RequestSurfacePackageCallback sẽ nhận được kết quả yêu cầu các gói nền tảng từ SDK.
Giá trị này không được là null . |
sendData
public void sendData (String sdkName, Bundle data, Executor callbackExecutor, SdkSandboxManager.SendDataCallback callback)
Gửi một gói data
đến SDK.
Sau khi ứng dụng khách nhận được tín hiệu về việc tải SDK thành công bằng SdkSandboxManager.LoadSdkCallback.onLoadSdkSuccess(android.os.Bundle)
, ứng dụng có thể yêu cầu gửi bất kỳ dữ liệu nào đến SDK trong hộp cát một cách không đồng bộ. nếu SDK không được tải, SecurityException
sẽ bị gửi đi.
Các tham số | |
---|---|
sdkName |
String : tên của SDK được tải vào hộp cát sdk, cùng tên được sử dụng trong loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.LoadSdkCallback)
Giá trị này không được là null . |
data |
Bundle : dữ liệu được gửi đến SDK được biểu thị dưới dạng Bundle
Giá trị này không được là null . |
callbackExecutor |
Executor : Executor để gọi lệnh gọi lại
Giá trị này không được là null .
|
callback |
SdkSandboxManager.SendDataCallback : SendDataCallback sẽ nhận các sự kiện trong quá trình tải và tương tác với SDK. SDK cũng có thể gửi lại dữ liệu thông qua SendDataCallback#onSendDataSuccess(Bundle)
Giá trị này không được là null . |