package Ġcom . b _ lam . resp l ash . util . custom tabs Ċ Ċ import Ġandroid . content . Activity NotFoundException Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroidx . browser . custom tabs . Custom Tabs Intent Ċ import Ġcom . b _ lam . resp l ash . util . get Custom Tabs Color Scheme Ċ Ċ class ĠCustom Tabs Helper Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġopen Custom Tab ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri : ĠUri , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtheme : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Tabs Intent Ġ= ĠCustom Tabs Intent . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Default Share MenuItem () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setColor Scheme ( get Custom Tabs Color Scheme ( theme )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Custom Tab ( context , Ġcustom Tabs Intent , Ġuri ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠOpen s Ġthe ĠURL Ġon Ġa ĠCustom ĠTab Ġif Ġpossible . ĊĠĠĠĠĠĠĠĠ Ġ* ĠOtherwise Ġfalls Ġback Ġto Ġopening Ġit Ġin Ġthe Ġdefault Ġbrowser ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠĠĠĠĠĠĠĠĠ ĠThe Ġhost Ġactivity ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcustom Tabs Intent ĠA ĠCustom Tabs Intent Ġto Ġbe Ġused Ġif ĠCustom ĠTabs Ġis Ġavailable ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġuri ĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThe ĠUri Ġto Ġbe Ġopened ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġopen Custom Tab ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Tabs Intent : ĠCustom Tabs Intent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri : ĠUri ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= ĠCustom Tabs Package Helper . get PackageName ToUse ( context , Ġuri ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġwe Ġcant Ġfind Ġa Ġpackage Ġname , Ġit Ġmeans Ġthere 's Ġno Ġbrowser Ġthat Ġsupports ĠChrome ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCustom ĠTabs Ġinstalled . ĠSo , Ġwe Ġfallback Ġto Ġthe Ġweb - view ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( packageName Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Fallback ( context , Ġuri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP _ MR 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Tabs Intent . intent . putExtra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . EXTRA _ REF ERR ER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse ("${ Intent . URI _ ANDROID _ APP _ SCHEME }// ${ context . packageName }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Tabs Intent . intent . set Package ( packageName ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Tabs Intent . launch Url ( context , Ġuri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠActivity NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Fallback ( context , Ġuri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġlaunch Fallback ( context : ĠContext , Ġuri : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , Ġuri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context . package Manager . query Intent Activities ( intent , Ġ 0 ). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }