วิธีที่แนะนำในการผสานรวมแอปพลิเคชันของคุณกับแท็บที่กำหนดเองคือการใช้ไลบรารีเบราว์เซอร์ AndroidX แต่คุณสามารถเริ่มแท็บที่กำหนดเองได้โดยไม่ต้องใช้ไลบรารีการสนับสนุน คู่มือนี้จะให้ภาพรวมเกี่ยวกับวิธีดำเนินการนี้
การใช้งานไลบรารีการสนับสนุนทั้งหมดมีอยู่ใน GitHub และสามารถใช้เป็น จุดเริ่มต้น นอกจากนี้ยังมีไฟล์ AIDL ที่จำเป็นต่อการเชื่อมต่อกับบริการด้วย เนื่องจาก ที่มีอยู่ในที่เก็บ Chromium จะใช้งานกับ Android Studio โดยตรงไม่ได้
ข้อมูลพื้นฐานสำหรับการเปิดใช้งานแท็บที่กำหนดเองโดยใช้ API ระดับต่ำ
// Using a VIEW intent for compatibility with any other browsers on device.
// Caller should not be setting FLAG_ACTIVITY_NEW_TASK or
// FLAG_ACTIVITY_NEW_DOCUMENT.
String url = ¨https://paul.kinlan.me/¨;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
// Must have. Extra used to match the session. Its value is an IBinder passed
// whilst creating a news session. See newSession() below. Even if the service is not
// used and there is no valid session id to be provided, this extra has to be present
// with a null value to launch a custom tab.
private static final String EXTRA_CUSTOM_TABS_SESSION = "android.support.customtabs.extra.SESSION";
Bundle extras = new Bundle;
extras.putBinder(EXTRA_CUSTOM_TABS_SESSION,
sessionICustomTabsCallback.asBinder() /* Set to null for no session */);
intent.putExtras(extras);
การเพิ่มการปรับแต่ง UI
รวมการปรับแต่ง UI ไว้โดยการเพิ่ม "Extra" ลงใน Intent ACTION_VIEW ตัวอย่างรายการทั้งหมดของ ค้นหาคีย์เพิ่มเติมที่ใช้เพื่อปรับแต่ง UI ได้ที่เอกสาร CustomTabsIntent ตัวอย่างเกี่ยวกับ วิธีเพิ่มสีของแถบเครื่องมือที่กำหนดเอง
// Extra that changes the background color for the address bar. colorInt is an int
// that specifies a Color.
private static final String EXTRA_CUSTOM_TABS_TOOLBAR_COLOR = "android.support.customtabs.extra.TOOLBAR_COLOR";
intent.putExtra(EXTRA_CUSTOM_TABS_TOOLBAR_COLOR, colorInt);
กำลังเชื่อมต่อกับบริการแท็บที่กำหนดเอง
คุณสามารถใช้บริการแท็บที่กำหนดเองได้ในลักษณะเดียวกันกับที่บริการอื่นๆ ของ Android อินเทอร์เฟซคือ สร้างด้วย AIDL และสร้างคลาสบริการของพร็อกซีให้คุณโดยอัตโนมัติ
ใช้วิธีการในบริการพร็อกซีเพื่อเตรียมเครื่องก่อน สร้างเซสชัน และดึงข้อมูลล่วงหน้าดังนี้
// Package name for the Chrome channel the client wants to connect to. This
// depends on the channel name.
// Stable = com.android.chrome
// Beta = com.chrome.beta
// Dev = com.chrome.dev
public static final String CUSTOM_TAB_PACKAGE_NAME = "com.chrome.dev"; // Change when in stable
// Action to add to the service intent. This action can be used as a way
// generically pick apps that handle custom tabs for both activity and service
// side implementations.
public static final String ACTION_CUSTOM_TABS_CONNECTION =
"android.support.customtabs.action.CustomTabsService";
Intent serviceIntent = new Intent(ACTION_CUSTOM_TABS_CONNECTION);
serviceIntent.setPackage(CUSTOM_TAB_PACKAGE_NAME);
context.bindService(serviceIntent, mServiceConnection,
Context.BIND_AUTO_CREATE | Context.BIND_WAIVE_PRIORITY);