Přehled
Chrome vlastní karty dát aplikací větší kontrolu nad jejich webových zkušenosti, a zajistit, aby se přechody mezi nativní a webové obsah, bezešvé, aniž by se museli uchýlit k WebView.
vlastní karty Chrome umožňují aplikaci přizpůsobit vzhled a pocit Chromu. Aplikace může změnit věci jako:
- panel Nástrojů barva
- Vstup a výstup animace
- Přidat vlastní akce k Chrome toolbar a přetečení menu
Chrome vlastní karty také umožňují developer, aby pre-start Chrome a pre-fetch obsah pro rychlejší načítání.
viz tento README pro více způsobů, jak používat Chrome vlastní karty.
nastavení
budete muset mít v telefonu nainstalovanou aplikaci Chrome. Pokud používáte emulátor, musíte nastavit služby Google Play a nainstalovat aplikaci Chrome v Obchodě Play.
přidejte knihovnu podpory Android pro vlastní karty Chrome jako závislost na souboru sestavení gradle:
implementation 'com.android.support:customtabs:25.2.0'
knihovna funguje pouze na API 16 (Jelly Bean) výše. Pokud jste podporu předchozí API, můžete přidat <uses-sdk tools:overrideLibrary="android.support.customtabs"/> do svého manifestu, aby platnost jeho použití a zkontrolujte, zda API verzi, při běhu a stačí použít Chrome Vlastní karty, pokud je jeho >= 16
Použití
nejvíce základní příklad na spuštění Chrome na kartě je přes vlastní záměr, jak je uvedeno níže:
// Use a CustomTabsIntent.Builder to configure CustomTabsIntent.String url = "https://www.codepath.com/";CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();// set toolbar color and/or setting custom actions before invoking build()// Once ready, call CustomTabsIntent.Builder.build() to create a CustomTabsIntentCustomTabsIntent customTabsIntent = builder.build();// and launch the desired Url with CustomTabsIntent.launchUrl()customTabsIntent.launchUrl(this, Uri.parse(url));
pokud nemáte nainstalovaný Chrome, záměr spustí výchozí prohlížeč nainstalovaný v zařízení. CustomTabsIntent jednoduše spustí implicitní záměr (android.intent.action.VIEW) a předá další data v záměru (tj. android.support.customtabs.extra.SESSION a android.support.customtabs.extra.TOOLBAR_COLOR), které budou ignorovány, pokud výchozí prohlížeč nemůže tyto informace zpracovat.
konfigurace dalších možností
konfigurace dalších možností vyžaduje použití třídy builder. Pokud chcete do nabídky přidat vlastní ikony nebo akce, budete k tomu muset vytvořit nevyřízené záměry.
Nastavení panelu Nástrojů barva
Pokud chcete nastavit panel nástrojů pro barvu, můžete použít setToolbarColor() metoda v builder třídy:
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();// set toolbar colorbuilder.setToolbarColor(ContextCompat.getColor(this, R.color.colorAccent));
Normálně, context.getResources().getColor()) může být použit, ale v Android API 23 tato metoda se již nepoužívá. Z tohoto důvodu naleznete v této příručce, Jak zahrnout knihovnu podpory návrhu a využít nové API ContextCompat.
přidání akce Sdílení

ve výchozím nastavení karta Chrome neobsahuje akci sdílení na panelu nástrojů. Do seznamu položek nabídky však můžete přidat výchozí položku:
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();// add share action to menu listbuilder.addDefaultShareMenuItem();
Přidání vlastní ikony

Pokud chcete přidat konkrétní ikonu (například na ikonu sdílení) na panelu nástrojů, musíte nejprve by se mělo přidat ikonu pomocí New -> Image Asset (v současné době, Chrome Karty nepodporují vektor obrazovkami, takže byste měli být pomocí PNG soubory jako ikony):

Poznámka: soubor, který je uložen. Budeme muset vytvořit bitmapu pro pozdější použití:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_name);
dále vytvořte záměr:
Intent intent = new Intent(Intent.ACTION_SEND);intent.setType("text/plain");intent.putExtra(Intent.EXTRA_TEXT, "http://www.codepath.com");
Dále musíte vytvořit nevyřízený záměr (viz tento klip YouTube pro více informací), který se používá k probuzení aplikace, když uživatel klikne na ikonu. Tento čekající záměr musí být předány Chrome Záložky záměr tvůrce:
int requestCode = 100;PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
a Konečně, musíme projít bitmap, text, a do doby, než záměr vytvořil:
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();// Map the bitmap, text, and pending intent to this icon// Set tint to be true so it matches the toolbar colorbuilder.setActionButton(bitmap, "Share Link", pendingIntent, true);CustomTabsIntent customTabsIntent = builder.build();
Povolit pre-spouštění a pre-fetching
Chrome vlastní karty také umožňují developer, aby pre-start Chrome a pre-fetch obsah pro rychlejší načítání.
zkopírujte následující soubory z GoogleChrome ukázkové repo git do vašeho projektu a podle toho upravte názvy balíčků:
- CustomTabActivityHelper.java
- CustomTabsHelper.java
- KeepAliveService.java
- ServiceConnection.java
- ServiceConnectionCallback.java
pokud je to možné, otevřete vlastní kartu Chrome pomocí následující metody. Pokud uživatel nemá prohlížeč, který podporuje vlastní karty Chrome, otevře výchozí prohlížeč:
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();CustomTabActivityHelper.openCustomTab(this, customTabsIntent, uri, new CustomTabActivityHelper.CustomTabFallback() { @Override public void openUri(Activity activity, Uri uri) { Intent intent = new Intent(Intent.ACTION_VIEW, uri); activity.startActivity(intent); } });
Další Kroky
výše rychlé integraci příklad otevře své Uri na Chrome Custom Tab bez rozcvičení, pre-fetching nebo UI přizpůsobení.
můžete najít příklad o tom, jak se připojit k Chrome Vlastní Karty služby použít teplé-up a pre-fetching na ServiceConnectionActivity vzorek z Týmu Google Chrome.
další informace o možných úpravách uživatelského rozhraní naleznete v ukázce CustomUIActivity z týmu Google Chrome.