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 SurfacePackage.

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.

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 SdkSandboxManager#sendData(String, Bundle, Executor, SendDataCallback).

Các phương thức công khai

static int getSdkSandboxState()

Trả về trạng thái hiện tại của SdkSandbox.

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 data đến SDK.

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

Đã thêm trong API cấp độ 33.
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

Đã thêm trong API cấp độ 33.
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

Đã thêm trong API cấp độ 33.
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.