הדרך המומלצת לשלב את האפליקציה עם כרטיסיות בהתאמה אישית היא באמצעות ספריית הדפדפן AndroidX, אבל אפשר גם להפעיל כרטיסייה בהתאמה אישית בלי ספריית התמיכה. במדריך הזה מוסבר איך עושים את זה.
ההטמעה המלאה של ספריית התמיכה זמינה ב-[GitHub][1] ואפשר להשתמש בה כנקודת התחלה. הוא מכיל גם את [קבצי ה-AIDL][2] שנדרשים כדי להתחבר לשירות, כי אי אפשר להשתמש ישירות באלה שנמצאים במאגר Chromium עם Android Studio.
היסודות להפעלת כרטיסיות מותאמות אישית באמצעות Low Level 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);
הוספת התאמות אישיות של ממשק המשתמש
כדי לכלול התאמות אישיות של ממשק המשתמש, צריך להוסיף Extras ל-Intent מסוג ACTION_VIEW. רשימה מלאה של מקשי ה-extras שמשמשים להתאמה אישית של ממשק המשתמש זמינה ב[מסמכי CustomTabsIntent][3]. דוגמה להוספת צבע בהתאמה אישית לסרגל הכלים:
// 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, ומחלקה של שירות proxy נוצרת אוטומטית בשבילכם.
משתמשים בשיטות בשירות ה-Proxy כדי לבצע חימום, ליצור סשנים ולבצע אחזור מראש:
// 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);
[1]: https://github.com/GoogleChrome/custom-tabs-client/tree/master/customtabs [2]: https://developer.android.com/guide/components/aidl.html [3]: https://developer.android.com/reference/androidx/browser/customtabs/CustomTabsIntent