package Ġcom . f isma . tr inity Ċ Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . util . Log Ċ import Ġandroidx . slice . Slice Ċ import Ġandroidx . slice . Slice Provider Ċ import Ġandroidx . vect ord raw able . graphics . drawable . Vector Drawable Compat Ċ import Ġcom . f isma . tr inity . model . Shortcut Ċ import Ġcom . f isma . tr inity . slice builders . Shortcut s Slice Builder Ċ import Ġcom . f isma . tr inity . slice builders . Weather Slice Builder Ċ import Ġcom . f isma . tr inity . util .* ĊĊ Ċ /** Ċ Ġ* ĠExamples Ġof Ġusing Ġslice Ġtemplate Ġbuild ers . Ċ Ġ*/ Ċ class ĠTr inity Plugin Provider Ġ: ĠSlice Provider () Ġ{ ĊĊĠ Ġprivate Ġlateinit Ġvar Ġhost Name Url : ĠString ĊĊĠ Ġprivate Ġlateinit Ġvar Ġshortcuts Path : ĠString ĊĠ Ġprivate Ġlateinit Ġvar Ġweather Path : ĠString ĊĠ Ġprivate Ġlateinit Ġvar Ġshortcuts Data : ĠArrayList < Shortcut > ĊĠ Ġprivate Ġlateinit Ġvar Ġdb : ĠDatabase Helper ĊĠ Ġprivate Ġlateinit Ġvar Ġcontent Not ifiers : ĠLazy Function Map < Uri , ĠUnit > ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġm Instance Ġ= Ġthis ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate Slice Provider (): ĠBoolean Ġ{ ĊĠĠĠ ĠLog . d ( TAG , Ġ" onCreate Slice Provider () ") ĊĊĠĠĠ Ġval Ġcontext NonNull Ġ= Ġcontext Ġ?: Ġreturn Ġfalse ĊĊĠĠĠ Ġcontent Not ifiers Ġ= ĠLazy Function Map Ġ{ ĊĠĠĠĠĠ Ġcontext NonNull . content Resolver . notify Change ( it , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdb Ġ= ĠDatabase Helper . getInstance ( context NonNull ) ĊĠĠĠ Ġshortcuts Data Ġ= Ġdb . shortcuts ĊĠĠĠ Ġ// ĠInitialize ĠSlice ĠURL Ġand Ġall Ġpossible Ġslice Ġpaths . ĊĠĠĠ Ġhost Name Url Ġ= Ġcontext NonNull . resources . getString ( R . string . host _ slice _ url ) ĊĊĠĠĠ Ġshortcuts Path Ġ= Ġcontext NonNull . resources . getString ( R . string . shortcuts _ slice _ path ) ĊĠĠĠ Ġweather Path Ġ= Ġcontext NonNull . resources . getString ( R . string . weather _ slice _ path ) ĊĊĠĠĠ Ġif Ġ( shortcuts Data . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġinit Shortcut s () ĊĠĠĠĠĠ Ġshortcuts Data Ġ= ĠDatabase Helper . getInstance ( context ). shortcuts ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġ/* ĊĠĠ Ġ* ĠTakes Ġan ĠIntent Ġ( as Ġspecified Ġby Ġthe Ġintent - filter Ġin Ġthe Ġmanifest ) Ġwith Ġdata ĊĠĠ Ġ* Ġ(" https :// interact ives lice provider . android . example . com /< your _ path >") Ġand Ġreturns Ġa Ġcontent ĊĠĠ Ġ* ĠURI Ġ(" content :// com . example . android . interact ives lice provider /< your _ path > "). ĊĠĠ Ġ*/ ĊĠ Ġoverride Ġfun Ġon Map Intent To Uri ( intent : ĠIntent ): ĠUri Ġ{ ĊĊĠĠĠ Ġval Ġpath Ġ= Ġintent . data ?. path Ġ?: Ġ"" ĊĠĠĠ ĠLog . d ( TAG , Ġ" on Map Intent To Uri : Ġ$ path ") ĊĠĠĠ Ġreturn ĠUri . Builder () ĊĠĠĠĠĠ Ġ. scheme ( Content Resolver . SCHEME _ CONTENT ) ĊĠĠĠĠĠ Ġ. authority ( context ?. packageName ) ĊĠĠĠĠĠ Ġ. path ( path ) ĊĠĠĠĠĠ Ġ. build () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Bind Slice ( slice Uri : ĠUri ?): ĠSlice ? Ġ{ ĊĠĠĠ ĠLog . d ( TAG , Ġ" on Bind Slice (): Ġ$ slice Uri ") ĊĠĠĠ Ġif Ġ( slice Uri Ġ== Ġnull Ġ|| Ġslice Uri . path Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġget Slice Builder ( slice Uri )?. build Slice () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Slice Builder ( slice Uri : ĠUri ) Ġ= Ġwhen Ġ( slice Uri . path ) Ġ{ ĊĠĠĠ Ġshortcuts Path Ġ-> ĠShort cuts Slice Builder ( ĊĠĠĠĠĠ Ġcontext Ġ= Ġcontext !! , ĊĠĠĠĠĠ Ġslice Uri Ġ= Ġslice Uri , ĊĠĠĠĠĠ Ġshortcuts Ġ= Ġshortcuts Data ĊĠĠĠ Ġ) ĊĠĠĠ Ġweather Path Ġ-> ĠWeather Slice Builder ( context , Ġslice Uri ) ĊĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Unknown ĠURI : Ġ$ slice Uri ") ĊĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġupdate Shortcut s () Ġ{ ĊĠĠĠ Ġshortcuts Data Ġ= ĠDatabase Helper . getInstance ( context ). shortcuts ĊĠĠĠ Ġval Ġuri Ġ= ĠUri . parse (" content :// com . f isma . tr inity / shortcuts ") ĊĠĠĠ Ġcontext . content Resolver . notify Change ( uri , Ġnull ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġinit Shortcut s () Ġ{ ĊĠĠĠ Ġval Ġgoogle Assistant Available Ġ= ĠTool . is Package Installed (" com . google . android . google quick search box ", Ġcontext . package Manager ) ĊĊĠĠĠ Ġif Ġ( google Assistant Available ) Ġ{ ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġcontext . package Manager . getApplication Icon (" com . google . android . google quick search box ") ĊĠĠĠĠĠĠĠ Ġdb . save Shortcut ( Shortcut . Builder () ĊĠĠĠĠĠĠĠĠĠ Ġ. setType ( Shortcut . Type . ACTION ) ĊĠĠĠĠĠĠĠĠĠ Ġ. set Index ( 0 ) ĊĠĠĠĠĠĠĠĠĠ Ġ. setAction ( Launcher Action . Action . Ass ist ) ĊĠĠĠĠĠĠĠĠĠ Ġ. setIcon ( icon ) ĊĠĠĠĠĠĠĠĠĠ Ġ. setLabel (" Google ") ĊĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġdrawable : ĠVector Drawable Compat ? ĊĠĠĠ Ġvar Ġshortcut : ĠShort cut ? ĊĠĠĠ Ġval Ġflash light Available Ġ= Ġcontext . package Manager . has System Feature ( PackageManager . FEATURE _ CAMERA _ FLASH ) ĊĊĠĠĠ Ġif Ġ( flash light Available ) Ġ{ ĊĠĠĠĠĠ Ġdrawable Ġ= ĠVector Drawable Compat . create ( context . resources , ĠR . drawable . ic _ flash light , Ġcontext . theme ) ĊĠĠĠĠĠ Ġshortcut Ġ= ĠShort cut . Builder () ĊĠĠĠĠĠĠĠ Ġ. setType ( Shortcut . Type . ACTION ) ĊĠĠĠĠĠĠĠ Ġ. setAction ( Launcher Action . Action . Flash light ) ĊĠĠĠĠĠĠĠ Ġ. setLabel (" Flash light ") ĊĠĠĠĠĠĠĠ Ġ. setIcon ( Image Util . drawable To Bitmap ( drawable !!. mutate ()) !! ) ĊĠĠĠĠĠĠĠ Ġ. set Index ( 1 ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠ Ġdb . save Shortcut ( shortcut ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġdrawable Ġ= ĠVector Drawable Compat . create ( context . resources , ĠR . drawable . ic _ bluetooth , Ġcontext . theme ) ĊĠĠĠ Ġdb . save Shortcut ( Shortcut . Builder () ĊĠĠĠĠĠ Ġ. setType ( Shortcut . Type . ACTION ) ĊĠĠĠĠĠ Ġ. setAction ( Launcher Action . Action . Bluetooth ) ĊĠĠĠĠĠ Ġ. setIcon ( Image Util . drawable To Bitmap ( drawable !!. mutate ()) !! ) ĊĠĠĠĠĠ Ġ. setLabel (" Bluetooth ") ĊĠĠĠĠĠ Ġ. set Index ( 2 ) ĊĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdrawable Ġ= ĠVector Drawable Compat . create ( context . resources , ĠR . drawable . ic _ photo _ black _ 2 4 dp , Ġcontext . theme ) ĊĠĠĠ Ġdb . save Shortcut ( Shortcut . Builder () ĊĠĠĠĠĠ Ġ. setType ( Shortcut . Type . ACTION ) ĊĠĠĠĠĠ Ġ. setAction ( Launcher Action . Action . Set Wall paper ) ĊĠĠĠĠĠ Ġ. setIcon ( Image Util . drawable To Bitmap ( drawable ) !! ) ĊĠĠĠĠĠ Ġ. setLabel (" Wall paper ") ĊĠĠĠĠĠ Ġ. set Index ( 3 ) ĊĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdrawable Ġ= ĠVector Drawable Compat . create ( context . resources , ĠR . drawable . ic _ settings _ launcher _ black _ 2 4 dp , Ġcontext . theme ) ĊĠĠĠ Ġdb . save Shortcut ( Shortcut . Builder () ĊĠĠĠĠĠ Ġ. setType ( Shortcut . Type . ACTION ) ĊĠĠĠĠĠ Ġ. setAction ( Launcher Action . Action . Launcher Settings ) ĊĠĠĠĠĠ Ġ. setIcon ( Image Util . drawable To Bitmap ( drawable ) !! ) ĊĠĠĠĠĠ Ġ. setLabel (" Settings ") ĊĠĠĠĠĠ Ġ. set Index ( 4 ) ĊĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Slice Provider " ĊĠĠĠ Ġvar Ġm Instance : ĠTr inity Plugin Provider ? Ġ= Ġnull ĊĊĠĠĠ Ġconst Ġval ĠACTION _ WIFI _ CHANGED Ġ= Ġ" com . example . android x . slice . action . WIFI _ CHANGED " ĊĠĠĠ Ġconst Ġval ĠACTION _ TO AST Ġ= Ġ" com . example . android x . slice . action . TO AST " ĊĠĠĠ Ġconst Ġval ĠEX TRA _ TO AST _ MESSAGE Ġ= Ġ" com . example . android x . extra . TO AST _ MESSAGE " ĊĠĠĠ Ġconst Ġval ĠACTION _ TO AST _ RANGE _ VALUE Ġ= Ġ" com . example . android x . slice . action . TO AST _ RANGE _ VALUE " ĊĠĠĠ Ġconst Ġval ĠACTION _ SHORT CUT S _ SETTINGS Ġ= Ġ" com . f isma . tr inity . action . SHORT CUT _ SETTINGS " ĊĠĠĠ Ġconst Ġval ĠACTION _ WE ATHER _ SETTINGS Ġ= Ġ" com . f isma . tr inity . action . WE ATHER _ SETTINGS " ĊĠĠĠ Ġconst Ġval ĠACTION _ AS SIST Ġ= Ġ" com . f isma . tr inity . action . AS SIST " ĊĠĠĠ Ġconst Ġval ĠACTION _ FLASH LIGHT Ġ= Ġ" com . f isma . tr inity . action . FLASH LIGHT " ĊĠĠĠ Ġconst Ġval ĠACTION _ BL U ETO OTH Ġ= Ġ" com . f isma . tr inity . action . BL U ETO OTH " ĊĠĠĠ Ġconst Ġval ĠACTION _ WALL P AP ER Ġ= Ġ" com . f isma . tr inity . action . WALL P AP ER " ĊĠĠĠ Ġconst Ġval ĠACTION _ LA UCH ER _ SETTINGS Ġ= Ġ" com . f isma . tr inity . action . LA UNCH ER _ SETTINGS " ĊĠĠĠ Ġconst Ġval ĠACTION _ LA UNCH _ APP Ġ= Ġ" com . f isma . tr inity . action . LA UNCH _ APP " ĊĊĠĠĠ Ġfun Ġget Pending Intent ( context : ĠContext , Ġaction : ĠString ): ĠPending Intent Ġ{ ĊĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( action ) ĊĠĠĠĠĠ Ġreturn ĠPending Intent . getActivity ( context , Ġ 0 , Ġintent , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetInstance (): ĠTr inity Plugin Provider ? Ġ{ ĊĠĠĠĠĠ Ġreturn Ġm Instance ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ