package Ġcom . rus lan . hl ush an . android . extensions Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . core . app . Notification Manager Compat Ċ Ċ interface ĠAndroid Notification Channel Ġ{ ĊĠĠĠ Ġval Ġchannel Id : ĠString ĊĠĠĠ Ġ@ get : String Res Ġval Ġchannel Name Res Id : ĠInt ĊĠĠĠ Ġ@ get : String Res Ġval Ġchannel Description Res Id : ĠInt ĊĠĠĠ Ġval Ġenable Sound And V ibrate : ĠBoolean Ċ } Ċ Ċ class ĠAndroid Notification Action ( ĊĠĠĠĠĠĠĠ Ġ@ Drawable Res Ġval Ġaction Image Res Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġaction Text : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġaction Pending Intent : ĠPending Intent , ĊĠĠĠĠĠĠĠ Ġval Ġauthentication Required : ĠBoolean Ċ ) Ċ Ċ private Ġval ĠContext . default Content Title : ĠString ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ String Res Ġval Ġlabel Res Id Ġ= Ġthis . application Info . label Res ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( label Res Id Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . getString ( label Res Id ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ fun Ġcreate Default Empty Pending Intent ( context : ĠContext , Ġid : ĠInt ): ĠPending Intent Ġ{ ĊĠĠĠ Ġval Ġflags Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( Pending Intent . FLAG _ IM MUT ABLE Ġor ĠPending Intent . FLAG _ UPDATE _ CURRENT ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ UPDATE _ CURRENT ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠPending Intent . getActivity ( context , Ġid , ĠIntent (), Ġflags ) Ċ } Ċ Ċ @ SuppressWarnings (" Long Parameter List ") Ċ class ĠAndroid Notification ( ĊĠĠĠĠĠĠĠ Ġval Ġid : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġpending Intent : ĠPending Intent ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġval Ġcontent Title : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġval Ġcontent Text : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Drawable Res Ġval Ġsmall Icon Res Id : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġval Ġchannel : ĠAndroid Notification Channel , ĊĠĠĠĠĠĠĠ Ġval Ġauto Cancel : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġval Ġcancel able : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġval Ġactions : ĠArray < Android Notification Action > Ġ= Ġempty Array () Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġbuild ( context : ĠContext ): ĠNotification Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Notification Channel ( context ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġ( content Title Ġ?: Ġcontext . default Content Title ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNotification Compat . Builder ( context , Ġchannel . channelId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( small Icon Res Id Ġ?: Ġcontext . app Icon ResourceId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ MAX ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ( content Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( pending Intent Ġ?: Ġcreate Default Empty Pending Intent ( context , Ġid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( auto Cancel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Compat . Big TextStyle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Big Content Title ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. big Text ( content Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( channel . enable Sound And V ibrate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Defaults ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification . DEFAULT _ SOUND Ġor ĠNotification . DEFAULT _ V IB RATE Ġor ĠNotification . DEFAULT _ LIGHT S ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( action Ġin Ġactions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġandroid Action Ġ= ĠNotification Compat . Action . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . action Image Res Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . action Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . action Pending Intent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtodo : Ġuncomment Ġon Ġcompile Sdk Ġ>= 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// . set Authentication Required ( action . authentication Required ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . addAction ( android Action ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= Ġbuilder . build () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! cancel able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification . flags Ġ= Ġnotification . flags Ġor Ġ( Notification . FLAG _ NO _ CLEAR Ġor ĠNotification . FLAG _ ONGO ING _ EVENT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnotification ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNotification Manager Compat . from ( context ). notify ( id , Ġbuild ( context )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Notification Channel ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= ĠNotification Manager Compat . from ( context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( notification Manager . get Notification Channel ( channel . channelId ) Ġ== Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimportance Ġ= Ġif Ġ( channel . enable Sound And V ibrate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Manager . IMPORT ANCE _ HIGH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Manager . IMPORT ANCE _ DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Channel Ġ= ĠNotification Channel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . channelId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( channel . channel Name Res Id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimportance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel . description Ġ= Ġcontext . getString ( channel . channel Description Res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel . enable Lights ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel . light Color Ġ= ĠColor . BLUE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( channel . enable Sound And V ibrate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ SuppressWarnings (" Magic Number ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel . vi br ation Pattern Ġ= Ġlong ArrayOf ( 0 , Ġ 1 0 0 0 , Ġ 5 0 0 , Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel . set Sound ( null , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel . enable V ibration ( channel . enable Sound And V ibrate ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager . create Notification Channel ( notification Channel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }