ผู้จัดการแซนด์บ็อกซ์ SdkSandbox

public final class SdkSandboxManager
extends Object

java.lang.Object
android.app.sdksandbox.SdkSandboxManager


มี API ที่จะโหลด SDKs ลงใน แซนด์บ็อกซ์ของ SDK แล้วโต้ตอบกับ SDK

แซนด์บ็อกซ์ SDK เป็นกระบวนการ Java ที่ทำงานในช่วง UID ที่แยกต่างหาก แต่ละแอปอาจมี SDK ของตัวเอง ของกระบวนการแซนด์บ็อกซ์

แอปต้องประกาศ SDK ที่จำเป็นต้องใช้ในไฟล์ Manifest ก่อนโดยใช้แท็ก <uses-sdk-library> แอปอาจโหลดเฉพาะ SDK ที่แอปต้องใช้ในแซนด์บ็อกซ์ของ SDK เท่านั้น

สรุป

ชั้นเรียนที่ซ้อนกัน

interface SdkSandboxManager.SdkSandboxProcessDeathCallback

การเรียกกลับสำหรับการติดตามเหตุการณ์การเสียชีวิตแซนด์บ็อกซ์ของ SDK 

ค่าคงที่

String EXTRA_DISPLAY_ID

ชื่อของคีย์ที่จะใช้ในช่อง Bundle ของ requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) ค่าของคีย์ควรกำหนดรหัสจำนวนเต็มของตรรกะ เพื่อแสดง SurfacePackage

String EXTRA_HEIGHT_IN_PIXELS

ชื่อของคีย์ที่จะใช้ในช่อง Bundle ของ requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) ค่าของคีย์ควรกำหนดความสูงที่เป็นจำนวนเต็มของ SurfacePackage ในหน่วยพิกเซล

String EXTRA_HOST_TOKEN

ชื่อของคีย์ที่จะใช้ในช่อง Bundle ของ requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) ค่าของคีย์ควรแสดงโทเค็นที่ SurfaceView.getHostToken() แสดงผลเมื่อ SurfaceView ได้รับการ ในลำดับชั้นการแสดงผล

String EXTRA_SURFACE_PACKAGE

ชื่อของคีย์ใน Bundle ที่ส่งไปยังฟังก์ชัน onResult ของ OutcomeReceiver ซึ่งเป็นช่องของ requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) ค่าของคีย์จะแสดง SurfacePackage ที่ขอ

String EXTRA_WIDTH_IN_PIXELS

ชื่อของคีย์ที่จะใช้ในช่อง Bundle ของ requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) ค่าของคีย์ควรกำหนดความกว้างที่เป็นจำนวนเต็มของ SurfacePackage ในหน่วยพิกเซล

int LOAD_SDK_ALREADY_LOADED

โหลด SDK แล้ว

int LOAD_SDK_INTERNAL_ERROR

เกิดข้อผิดพลาดภายในขณะโหลด SDK

int LOAD_SDK_NOT_FOUND

ไม่พบ SDK

int LOAD_SDK_SDK_DEFINED_ERROR

เกิดข้อผิดพลาดเกี่ยวกับ SDK หลังจากโหลด

int LOAD_SDK_SDK_SANDBOX_DISABLED

ปิดใช้แซนด์บ็อกซ์ SDK อยู่

int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR

เกิดข้อผิดพลาดภายในขณะขอ SurfacePackage

int REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED

SDK ไม่ได้โหลดขณะขอ SurfacePackage

int SDK_SANDBOX_PROCESS_NOT_AVAILABLE

ขั้นตอนแซนด์บ็อกซ์ของ SDK ไม่พร้อมใช้งาน

String SDK_SANDBOX_SERVICE

ใช้กับ Context#getSystemService(String) เพื่อเรียกข้อมูล SdkSandboxManager สำหรับการโต้ตอบกับ SDK ที่เป็นของแอปพลิเคชันไคลเอ็นต์นี้

int SDK_SANDBOX_STATE_DISABLED

ปิดใช้แซนด์บ็อกซ์ SDK อยู่

int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

เปิดใช้แซนด์บ็อกซ์ SDK แล้ว

วิธีการสาธารณะ

void addSdkSandboxProcessDeathCallback(Executor callbackExecutor, SdkSandboxManager.SdkSandboxProcessDeathCallback callback)

เพิ่ม Callback ที่ลงทะเบียนสำหรับเหตุการณ์ในวงจรของแซนด์บ็อกซ์ SDK เช่น แซนด์บ็อกซ์ของ SDK การเสียชีวิต

void addSyncedSharedPreferencesKeys(Set<String> keys)

เพิ่มคีย์ในชุดคีย์ที่ซิงค์จาก SharedPreferences เริ่มต้นของแอปไปยัง SDK แซนด์บ็อกซ์

List<AppOwnedSdkSandboxInterface> getAppOwnedSdkSandboxInterfaces()

ดึงข้อมูลรายการ AppOwnedSdkSandboxInterface ที่ลงทะเบียนสำหรับแอป

List<SandboxedSdk> getSandboxedSdks()

ดึงข้อมูลเกี่ยวกับ SDK ที่โหลดในแซนด์บ็อกซ์

static int getSdkSandboxState()

แสดงสถานะปัจจุบันของความพร้อมใช้งานฟีเจอร์แซนด์บ็อกซ์ SDK

Set<String> getSyncedSharedPreferencesKeys()

แสดงคีย์ชุดที่ซิงค์จาก SharedPreferences เริ่มต้นของแอปไปยัง แซนด์บ็อกซ์ SDK

void loadSdk(String sdkName, Bundle params, Executor executor, OutcomeReceiver<SandboxedSdkLoadSdkException> receiver)

โหลด SDK ในกระบวนการ Java แซนด์บ็อกซ์ SDK

void registerAppOwnedSdkSandboxInterface(AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)

ลงทะเบียน AppOwnedSdkSandboxInterface สำหรับกระบวนการของแอป

void removeSdkSandboxProcessDeathCallback(SdkSandboxManager.SdkSandboxProcessDeathCallback callback)

นำ SdkSandboxProcessDeathCallback ที่เพิ่มไว้ก่อนหน้านี้โดยใช้ addSdkSandboxProcessDeathCallback(java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.SdkSandboxProcessDeathCallback) ออก

void removeSyncedSharedPreferencesKeys(Set<String> keys)

นำคีย์ออกจากชุดคีย์ที่เพิ่มโดยใช้ addSyncedSharedPreferencesKeys(java.util.Set)

ระบบจะลบคีย์ที่นำออกออกจากแซนด์บ็อกซ์ SDK หากมีการซิงค์คีย์ดังกล่าวอยู่แล้ว

void requestSurfacePackage(String sdkName, Bundle params, Executor callbackExecutor, OutcomeReceiver<BundleRequestSurfacePackageException> receiver)

ส่งคำขอแพ็กเกจแพลตฟอร์มไปยัง SDK

void startSdkSandboxActivity(Activity fromActivity, IBinder sdkActivityToken)

เริ่ม Activity ในแซนด์บ็อกซ์ SDK

void unloadSdk(String sdkName)

ยกเลิกการโหลด SDK ที่เคยโหลดโดยผู้โทรก่อนหน้านี้

void unregisterAppOwnedSdkSandboxInterface(String name)

ยกเลิกการลงทะเบียน ERROR(/AppOwnedSdkSandboxInterfaces) สำหรับกระบวนการของแอป

วิธีการที่รับมา

ค่าคงที่

EXTRA_DISPLAY_ID

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public static final String EXTRA_DISPLAY_ID

ชื่อของคีย์ที่จะใช้ในช่อง Bundle ของ requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) ค่าของคีย์ควรกำหนดรหัสจำนวนเต็มของตรรกะ เพื่อแสดง SurfacePackage

มูลค่าคงที่: "android.app.sdksandbox.extra.DISPLAY_ID"

EXTRA_HEIGHT_IN_PIXELS

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public static final String EXTRA_HEIGHT_IN_PIXELS

ชื่อของคีย์ที่จะใช้ในช่อง Bundle ของ requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) ค่าของคีย์ควรกำหนดความสูงที่เป็นจำนวนเต็มของ SurfacePackage ในหน่วยพิกเซล

มูลค่าคงที่: "android.app.sdksandbox.extra.HEIGHT_IN_PIXELS"

โทเค็นภายนอก

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public static final String EXTRA_HOST_TOKEN

ชื่อของคีย์ที่จะใช้ในช่อง Bundle ของ requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) ค่าของคีย์ควรแสดงโทเค็นที่ SurfaceView.getHostToken() แสดงผลเมื่อ SurfaceView ได้รับการ ในลำดับชั้นการแสดงผล ระบบยอมรับเฉพาะค่าที่ไม่ใช่ Null ในการเปิดใช้การรายงาน ANR

มูลค่าคงที่: "android.app.sdksandbox.extra.HOST_TOKEN"

แพ็กเกจเสริมพื้นผิว

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public static final String EXTRA_SURFACE_PACKAGE

ชื่อของคีย์ใน Bundle ที่ส่งไปยังฟังก์ชัน onResult ของ OutcomeReceiver ซึ่งเป็นช่องของ requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) ค่าของคีย์จะแสดง SurfacePackage ที่ขอ

มูลค่าคงที่: "android.app.sdksandbox.extra.SURFACE_PACKAGE"

EXTRA_WIDTH_IN_PIXELS

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public static final String EXTRA_WIDTH_IN_PIXELS

ชื่อของคีย์ที่จะใช้ในช่อง Bundle ของ requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) ค่าของคีย์ควรกำหนดความกว้างที่เป็นจำนวนเต็มของ SurfacePackage ในหน่วยพิกเซล

มูลค่าคงที่: "android.app.sdksandbox.extra.WIDTH_IN_PIXELS"

LOAD_SDK_ALREADY_LOADED

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public static final int LOAD_SDK_ALREADY_LOADED

โหลด SDK แล้ว

ซึ่งเป็นการระบุว่าแอปพลิเคชันไคลเอ็นต์พยายามโหลด SDK เดียวกันซ้ำโดยเรียกใช้ loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) หลังจาก โหลดสำเร็จแล้ว

มูลค่าคงที่: 101 (0x00000065)

ข้อผิดพลาด LOAD_SDK_INTERNAL_ERROR

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public static final int LOAD_SDK_INTERNAL_ERROR

เกิดข้อผิดพลาดภายในขณะโหลด SDK

ข้อผิดพลาดนี้บ่งบอกว่าเกิดข้อผิดพลาดภายในทั่วไปขณะใช้การเรียกจากไคลเอ็นต์ แอปพลิเคชัน

มูลค่าคงที่: 500 คน (0x000001f4)

LOAD_SDK_NOT_FOUND

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public static final int LOAD_SDK_NOT_FOUND

ไม่พบ SDK

ซึ่งหมายความว่าแอปพลิเคชันไคลเอ็นต์พยายามโหลด SDK ที่ไม่มีอยู่โดยการเรียกใช้ loadSdk(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver)

มูลค่าคงที่: 100 คน (0x00000064)

LOAD_SDK_SDK_DEFINED_ERROR

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public static final int LOAD_SDK_SDK_DEFINED_ERROR

เกิดข้อผิดพลาดเกี่ยวกับ SDK หลังจากโหลด

ซึ่งหมายความว่า SDK พบข้อผิดพลาดระหว่างการเริ่มต้นหลังการโหลด รายละเอียดของข้อมูลนี้ได้มาจาก Bundle ที่ส่งคืนใน LoadSdkException จนถึง OutcomeReceiver ส่งผ่านไปยัง SdkSandboxManager#loadSdk

มูลค่าคงที่: 102 (0x00000066)

LOAD_SDK_SDK_SANDBOX_DISABLED

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public static final int LOAD_SDK_SDK_SANDBOX_DISABLED

ปิดใช้แซนด์บ็อกซ์ SDK อยู่

ซึ่งเป็นการระบุว่าแซนด์บ็อกซ์ SDK ปิดใช้อยู่ ความพยายามโหลด SDK ในครั้งต่อๆ ไป การเปิดเครื่องนี้จะล้มเหลวด้วย

มูลค่าคงที่: 103 (0x00000067)

REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public static final int REQUEST_SURFACE_PACKAGE_INTERNAL_ERROR

เกิดข้อผิดพลาดภายในขณะขอ SurfacePackage

ข้อความนี้บ่งบอกว่าเกิดข้อผิดพลาดภายในทั่วไปขณะส่งคำขอ SurfacePackage

มูลค่าคงที่: 700 (0x000002bc)

REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED

public static final int REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED

SDK ไม่ได้โหลดขณะขอ SurfacePackage

ซึ่งหมายความว่า SDK ที่มีการขอ SurfacePackage นั้นไม่ใช่ โหลดเนื่องจากแซนด์บ็อกซ์ไม่ทำงานหรือไม่ได้โหลดตั้งแต่แรก

มูลค่าคงที่: 701 (0x000002bd)

SDK_SANDBOX_PROCESS_NOT_available

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public static final int SDK_SANDBOX_PROCESS_NOT_AVAILABLE

ขั้นตอนแซนด์บ็อกซ์ของ SDK ไม่พร้อมใช้งาน

ซึ่งเป็นการระบุว่ากระบวนการแซนด์บ็อกซ์ SDK ไม่พร้อมใช้งานเนื่องจากได้สิ้นสุดลงแล้ว ไม่มีการเชื่อมต่อ หรือไม่ได้สร้างขึ้นตั้งแต่แรก

มูลค่าคงที่: 503 (0x000001f7)

SDK_SANDBOX_SERVICE

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public static final String SDK_SANDBOX_SERVICE

ใช้กับ Context#getSystemService(String) เพื่อเรียกข้อมูล SdkSandboxManager สำหรับการโต้ตอบกับ SDK ที่เป็นของแอปพลิเคชันไคลเอ็นต์นี้

มูลค่าคงที่: "sdk_sandbox"

สถานะปิดใช้ SDK_SANDBOX

public static final int SDK_SANDBOX_STATE_DISABLED

ปิดใช้แซนด์บ็อกซ์ SDK อยู่

มี SdkSandboxManager API ซ่อนอยู่ การพยายามโทรหาหมายเลขดังกล่าวจะส่งผลให้UnsupportedOperationException

มูลค่าคงที่: 0 ครั้ง (0x00000000)

SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

public static final int SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

เปิดใช้แซนด์บ็อกซ์ SDK แล้ว

แอปสามารถใช้ API ของ SdkSandboxManager เพื่อโหลด SDKs ซึ่งขึ้นอยู่กับ กระบวนการแซนด์บ็อกซ์ของ SDK ที่เกี่ยวข้อง

มูลค่าคงที่: 2 ครั้ง (0x00000002)

วิธีการสาธารณะ

addSdkSandboxProcessDeathCallback

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public void addSdkSandboxProcessDeathCallback (Executor callbackExecutor, 
                SdkSandboxManager.SdkSandboxProcessDeathCallback callback)

เพิ่ม Callback ที่ลงทะเบียนสำหรับเหตุการณ์ในวงจรของแซนด์บ็อกซ์ SDK เช่น แซนด์บ็อกซ์ของ SDK การเสียชีวิต หากยังไม่มีการสร้างแซนด์บ็อกซ์เมื่อมีการเรียกใช้ คำขอจะ ไว้จนกว่าจะมีการสร้างแซนด์บ็อกซ์ โดยจะเปิดใช้งานสำหรับแซนด์บ็อกซ์นั้น ณ จุดนั้น หลายสกุลเงิน สามารถเพิ่มการเรียกกลับเพื่อตรวจหาการเสียชีวิตได้ และจะไม่ถูกลบเมื่อแซนด์บ็อกซ์ตาย

พารามิเตอร์
callbackExecutor Executor: Executor ที่จะเรียกใช้ Callback ค่านี้ต้องไม่เป็น null ระบบจะส่งเหตุการณ์ Callback และ Listener ผ่านสิ่งนี้ Executor มอบวิธีง่ายๆ ในการควบคุมชุดข้อความที่ ในการส่งกิจกรรมผ่านชุดข้อความหลักของ คุณสามารถใช้ Context.getMainExecutor() หรือระบุ Executor ที่ส่งไปยังชุดข้อความที่เหมาะสม

callback SdkSandboxManager.SdkSandboxProcessDeathCallback: SdkSandboxProcessDeathCallback ซึ่งจะได้รับแซนด์บ็อกซ์ SDK ในวงจร ค่านี้ต้องไม่เป็น null

addSyncedSharedPreferencesKeys

public void addSyncedSharedPreferencesKeys (Set<String> keys)

เพิ่มคีย์ในชุดคีย์ที่ซิงค์จาก SharedPreferences เริ่มต้นของแอปไปยัง SDK แซนด์บ็อกซ์

ข้อมูลที่ซิงค์จะพร้อมให้ SDK อ่านโดยใช้ SdkSandboxController.getClientSharedPreferences() API

หากต้องการหยุดซิงค์คีย์ใดก็ตามที่เพิ่มโดยใช้ API นี้ ให้ใช้ removeSyncedSharedPreferencesKeys(java.util.Set)

การซิงค์จะหยุดทำงานหากแอปรีสตาร์ทและผู้ใช้ต้องเรียกใช้ API นี้อีกครั้งเพื่อสร้างพูลใหม่ สำหรับการซิงค์

หมายเหตุ: คลาสนี้ไม่รองรับการใช้งานในหลายกระบวนการ

พารามิเตอร์
keys Set: ชุดคีย์ที่จะซิงค์กับแซนด์บ็อกซ์ ค่านี้ต้องไม่เป็น null

อินเทอร์เฟซ getAppเป็นเจ้าของโดเมนSdkSandbox

public List<AppOwnedSdkSandboxInterface> getAppOwnedSdkSandboxInterfaces ()

ดึงข้อมูลรายการ AppOwnedSdkSandboxInterface ที่ลงทะเบียนสำหรับแอป

คิกรีเทิร์น
List<AppOwnedSdkSandboxInterface> รายการว่างเปล่าหากไม่พบข้อมูล callInfo ในแผนที่ หรือระบุรายการ AppOwnedSdkSandboxInterface ค่านี้ต้องไม่เป็น null

getSandboxedSdks

public List<SandboxedSdk> getSandboxedSdks ()

ดึงข้อมูลเกี่ยวกับ SDK ที่โหลดในแซนด์บ็อกซ์

คิกรีเทิร์น
List<SandboxedSdk> รายการ SandboxedSdk ที่มี SDK ทั้งหมดที่โหลดในปัจจุบัน ค่านี้ต้องไม่เป็น null

getSdkSandboxState

public static int getSdkSandboxState ()

แสดงสถานะปัจจุบันของความพร้อมใช้งานฟีเจอร์แซนด์บ็อกซ์ SDK

คิกรีเทิร์น
int ค่าคือ SDK_SANDBOX_STATE_DISABLED หรือ SDK_SANDBOX_STATE_ENABLED_PROCESS_ISOLATION

getSyncedSharedPreferencesKeys

public Set<String> getSyncedSharedPreferencesKeys ()

แสดงคีย์ชุดที่ซิงค์จาก SharedPreferences เริ่มต้นของแอปไปยัง แซนด์บ็อกซ์ SDK

คิกรีเทิร์น
Set<String> ค่านี้ต้องไม่เป็น null

loadSdk

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public void loadSdk (String sdkName, 
                Bundle params, 
                Executor executor, 
                OutcomeReceiver<SandboxedSdkLoadSdkException> receiver)

โหลด SDK ในกระบวนการ Java แซนด์บ็อกซ์ SDK

โหลดไลบรารี SDK ด้วย sdkName ไปยังกระบวนการแซนด์บ็อกซ์ SDK แบบไม่พร้อมกัน ผู้โทรจะได้รับการแจ้งเตือนผ่าน receiver

ผู้โทรควรประกาศ SDKs อยู่แล้วว่าจะขึ้นอยู่กับในไฟล์ Manifest โดยใช้แท็ก <uses-sdk-library> ผู้โทรอาจโหลดเฉพาะ SDKs เท่านั้นโดยขึ้นอยู่กับ SDK แซนด์บ็อกซ์

เมื่อแอปพลิเคชันไคลเอ็นต์โหลด SDK แรก กระบวนการแซนด์บ็อกซ์ SDK ใหม่จะ สร้าง แล้ว ถ้ามีการสร้างแซนด์บ็อกซ์สำหรับแอปพลิเคชันไคลเอ็นต์แล้ว SDK เพิ่มเติม จะถูกโหลดลงในแซนด์บ็อกซ์เดียวกัน

สามารถเรียก API นี้ได้ในขณะที่ผู้โทรทำงานอยู่ในเบื้องหน้าเท่านั้น สายจาก พื้นหลังจะส่งผลให้แสดงผล LoadSdkException ใน receiver

พารามิเตอร์
sdkName String: ชื่อของ SDK ที่จะโหลด ค่านี้ต้องไม่เป็น null

params Bundle: พารามิเตอร์เพิ่มเติมที่จะส่งไปให้ SDK ในรูปแบบ Bundle ตามที่ตกลงกันระหว่างลูกค้าและ SDK ค่านี้ต้องไม่เป็น null

executor Executor: Executor ที่จะเรียกใช้ตัวรับ ค่านี้ต้องไม่เป็น null ระบบจะส่งเหตุการณ์ Callback และ Listener ผ่านสิ่งนี้ Executor มอบวิธีง่ายๆ ในการควบคุมชุดข้อความที่ ในการส่งกิจกรรมผ่านชุดข้อความหลักของ คุณสามารถใช้ Context.getMainExecutor() หรือระบุ Executor ที่ส่งไปยังชุดข้อความที่เหมาะสม

receiver OutcomeReceiver: ตัวเลือกนี้จะได้รับ SandboxedSdk เมื่อเรียกใช้สำเร็จ หรือ LoadSdkException ค่านี้ต้องไม่เป็น null

RegisterAppOwnerSdkSandboxInterface

public void registerAppOwnedSdkSandboxInterface (AppOwnedSdkSandboxInterface appOwnedSdkSandboxInterface)

ลงทะเบียน AppOwnedSdkSandboxInterface สำหรับกระบวนการของแอป

การจดทะเบียน AppOwnedSdkSandboxInterface ที่มีชื่อเดียวกันกับก่อนหน้านี้ ของอินเทอร์เฟซที่ลงทะเบียนแล้วจะแสดงผลเป็น IllegalStateException

AppOwnedSdkSandboxInterface#getName() หมายถึงชื่อของอินเทอร์เฟซ

พารามิเตอร์
appOwnedSdkSandboxInterface AppOwnedSdkSandboxInterface: AppownerSdkSandboxInterface ที่จะจดทะเบียน ค่านี้ต้องไม่เป็น null

removeSdkSandboxProcessDeathCallback

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public void removeSdkSandboxProcessDeathCallback (SdkSandboxManager.SdkSandboxProcessDeathCallback callback)

นำ SdkSandboxProcessDeathCallback ที่เพิ่มไว้ก่อนหน้านี้โดยใช้ addSdkSandboxProcessDeathCallback(java.util.concurrent.Executor, android.app.sdksandbox.SdkSandboxManager.SdkSandboxProcessDeathCallback) ออก

พารามิเตอร์
callback SdkSandboxManager.SdkSandboxProcessDeathCallback: SdkSandboxProcessDeathCallback ที่ก่อนหน้านี้เพิ่มโดยใช้ SdkSandboxManager#addSdkSandboxProcessDeathCallback(Executor, SdkSandboxProcessDeathCallback) ค่านี้ต้องไม่เป็น null

removeSyncedSharedPreferencesKeys

public void removeSyncedSharedPreferencesKeys (Set<String> keys)

นำคีย์ออกจากชุดคีย์ที่เพิ่มโดยใช้ addSyncedSharedPreferencesKeys(java.util.Set)

ระบบจะลบคีย์ที่นำออกออกจากแซนด์บ็อกซ์ SDK หากมีการซิงค์คีย์ดังกล่าวอยู่แล้ว

พารามิเตอร์
keys Set: ชุดของชื่อคีย์ที่ไม่ควรซิงค์กับแซนด์บ็อกซ์อีกต่อไป ค่านี้ต้องไม่เป็น null

แพ็กเกจ requestSurface

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public void requestSurfacePackage (String sdkName, 
                Bundle params, 
                Executor callbackExecutor, 
                OutcomeReceiver<BundleRequestSurfacePackageException> receiver)

ส่งคำขอแพ็กเกจแพลตฟอร์มไปยัง SDK

หลังจากที่แอปพลิเคชันไคลเอ็นต์ได้รับสัญญาณเกี่ยวกับการโหลด SDK ที่สำเร็จ และ เพิ่ม SurfaceView ลงในลำดับชั้นการแสดงผลแล้ว ระบบอาจส่งคำขอแบบอะซิงโครนัส SurfacePackage เพื่อแสดงผลมุมมองจาก SDK

เมื่อ SurfacePackage พร้อมใช้งาน การติดต่อกลับ OutcomeReceiver#onResult ของ receiver ที่ผ่านแล้วจะถูกเรียก การเรียกกลับนี้จะมี Bundle ซึ่งจะมีคีย์ SdkSandboxManager#EXTRA_SURFACE_PACKAGE ที่ ค่าที่เชื่อมโยงคือ SurfacePackage ที่ขอ

params ที่ส่งผ่านต้องมีคีย์ต่อไปนี้: EXTRA_WIDTH_IN_PIXELS, SdkSandboxManager#EXTRA_HEIGHT_IN_PIXELS, SdkSandboxManager#EXTRA_DISPLAY_ID และ SdkSandboxManager#EXTRA_HOST_TOKEN ถ้า คีย์ใดคีย์หนึ่งหายไปหรือไม่ถูกต้อง จะมีการทิ้ง IllegalArgumentException

สามารถเรียก API นี้ได้ในขณะที่ผู้โทรทำงานอยู่ในเบื้องหน้าเท่านั้น สายจาก จะทำให้ระบบแสดงผล RequestSurfacePackageException ใน receiver

พารามิเตอร์
sdkName String: ชื่อของ SDK ที่โหลดลงในแซนด์บ็อกซ์ SDK ค่านี้ต้องไม่เป็น null

params Bundle: พารามิเตอร์ที่แอปพลิเคชันไคลเอ็นต์ส่งไปยัง SDK ค่านี้ต้องไม่เป็น null

callbackExecutor Executor: Executor ที่จะเรียกใช้ Callback ค่านี้ต้องไม่เป็น null ระบบจะส่งเหตุการณ์ Callback และ Listener ผ่านสิ่งนี้ Executor มอบวิธีง่ายๆ ในการควบคุมชุดข้อความที่ ในการส่งกิจกรรมผ่านชุดข้อความหลักของ คุณสามารถใช้ Context.getMainExecutor() หรือระบุ Executor ที่ส่งไปยังชุดข้อความที่เหมาะสม

receiver OutcomeReceiver: ส่งคืน Bundle เมื่อสำเร็จ ซึ่งจะมีคีย์ SdkSandboxManager#EXTRA_SURFACE_PACKAGE ที่มีค่า SurfacePackage หรือ RequestSurfacePackageException เมื่อล้มเหลว ค่านี้ต้องไม่เป็น null

การขว้าง
IllegalArgumentException หาก params ไม่มีคีย์ที่จำเป็นทั้งหมด

startSdkSandboxActivity

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 7 ด้วย
public void startSdkSandboxActivity (Activity fromActivity, 
                IBinder sdkActivityToken)

เริ่ม Activity ในแซนด์บ็อกซ์ SDK

ฟังก์ชันนี้จะเริ่ม Activity ใหม่ในงานเดียวกันกับ fromActivity ที่ผ่านแล้วส่งไปยัง SDK ที่แชร์ sdkActivityToken ที่ผ่านแล้วซึ่ง ระบุคำขอจาก SDK นั้นเพื่อระบุ Activity นี้

Activity จะไม่เริ่มต้นในกรณีต่อไปนี้

  • แอปที่เรียกใช้ API นี้อยู่ในเบื้องหลัง
  • sdkActivityToken ที่ผ่านไม่ได้แมปกับคำขอ Activity สร้าง SDK ที่แชร์กับแอปของผู้โทร
  • SDK ที่แชร์ sdkActivityToken ที่ส่งผ่านได้นำคำขอของรายการนี้ออก Activity
  • สร้างแซนด์บ็อกซ์ Activity แล้ว

พารามิเตอร์
fromActivity Activity: ระบบจะใช้ Activity เพื่อเริ่มแซนด์บ็อกซ์ใหม่ Activity โดยเรียกใช้ Activity#startActivity(Intent) กับแซนด์บ็อกซ์ ค่านี้ต้องไม่เป็น null

sdkActivityToken IBinder: ตัวระบุที่ SDK แชร์ ซึ่งขอ Activity ค่านี้ต้องไม่เป็น null

ยกเลิกการโหลด SDK

เพิ่มใน API ระดับ 34
ยังมีในส่วนขยายโฆษณา 4 ด้วย
public void unloadSdk (String sdkName)

ยกเลิกการโหลด SDK ที่เคยโหลดโดยผู้โทรก่อนหน้านี้

เราไม่รับประกันว่าหน่วยความจำที่จัดสรรสำหรับ SDK นี้จะได้รับการปล่อยว่างทันที ทั้งหมด การโทรครั้งต่อๆ ไปไปยัง requestSurfacePackage(java.lang.String, android.os.Bundle, java.util.concurrent.Executor, android.os.OutcomeReceiver) สำหรับ sdkName ที่ระบุจะล้มเหลว

สามารถเรียก API นี้ได้ในขณะที่ผู้โทรทำงานอยู่ในเบื้องหน้าเท่านั้น สายจาก พื้นหลังจะทำให้มีการส่ง SecurityException

พารามิเตอร์
sdkName String: ชื่อ SDK ที่จะยกเลิกการโหลด ค่านี้ต้องไม่เป็น null

ยกเลิกการลงทะเบียนแอปเป็นเจ้าของSdkSandboxInterface

public void unregisterAppOwnedSdkSandboxInterface (String name)

ยกเลิกการลงทะเบียน ERROR(/AppOwnedSdkSandboxInterfaces) สำหรับกระบวนการของแอป

พารามิเตอร์
name String: ชื่อที่ใช้จดทะเบียน AppOWNERSdkSandboxInterface ค่านี้ต้องไม่เป็น null